programing

형식 문자 Angular 4에서 문자열을 부울로 변환하는 방법

abcjava 2023. 3. 22. 20:34
반응형

형식 문자 Angular 4에서 문자열을 부울로 변환하는 방법

이 질문을 한 것이 처음이 아니라는 것을 알고 있으며, 제 제목에서 언급했듯이, 저는 문자열 값을 부울로 변환하려고 합니다.

이전에 몇 가지 값을 로컬 스토리지에 저장했습니다.이제 모든 값을 가져와 모든 값을 일부 부울 변수에 할당합니다.

app.component.ts

localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);

여기서this.btnLoginNumOne그리고.this.btnLoginEdit문자열 값("true, false")입니다.

미러.컴포넌트.ts

if (localStorage.getItem('CheckOutPageReload')) {
      let stringToSplit = localStorage.getItem('CheckOutPageReload');
      this.pageLoadParams = stringToSplit.split(',');

      this.btnLoginNumOne = this.pageLoadParams[0]; //here I got the error as boolean value is not assignable to string
      this.btnLoginEdit = this.pageLoadParams[1]; //here I got the error as boolean value is not assignable to string
}

이 컴포넌트에서this.btnLoginNumOne와this.btnLoginEdit는 부울값입니다.

스택 오버플로우에서 솔루션을 시도했지만 아무 것도 작동하지 않습니다.

누가 고쳐줄 사람 없어요?

방법 1:

var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true

방법 2:.

var stringValue = "true";
var boolValue = (stringValue =="true");   //returns true

방법 3:

var stringValue = "true";
var boolValue = JSON.parse(stringValue);   //returns true

방법 4:

var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true'; //returns true

방법 5:

var stringValue = "true";
var boolValue = getBoolean(stringValue); //returns true
function getBoolean(value){
   switch(value){
        case true:
        case "true":
        case 1:
        case "1":
        case "on":
        case "yes":
            return true;
        default: 
            return false;
    }
}

출처 : http://codippa.com/how-to-convert-string-to-boolean-javascript/

다른 가치관을 시도하고 있습니다.JSON.parse(value)효과가 있는 것 같습니다.

// true
Boolean(JSON.parse("true"));
Boolean(JSON.parse("1"));
Boolean(JSON.parse(1));
Boolean(JSON.parse(true));

// false
Boolean(JSON.parse("0")); 
Boolean(JSON.parse(0));
Boolean(JSON.parse("false"));
Boolean(JSON.parse(false));

시나리오에서는 문자열을 부울로 변환할 수 있습니다.someString === 'true'(이미 응답한 바와 같이).

하지만 로컬 스토리지와 관련된 주요 문제를 해결하도록 하겠습니다.

로컬 스토리지에서는 문자열만 값으로 지원하므로 데이터를 저장소에 저장하기 전에 항상 문자열로 직렬화하고 가져올 때 프로세스를 반대로 수행하는 것이 좋습니다.

JSON은 JavaScript에서 처리하기가 매우 쉽기 때문에 데이터를 시리얼화하기 위한 적절한 형식일 수 있습니다.

따라서 데이터를 JSON에 직렬화할 수 있는 경우 다음 기능을 사용하여 로컬 스토리지와 상호 작용할 수 있습니다.

function setItemInStorage(key, item) {
  localStorage.setItem(key, JSON.stringify(item));
}

function getItemFromStorage(key) {
  return JSON.parse(localStorage.getItem(key));
}

다음으로 예를 다음과 같이 다시 작성할 수 있습니다.

setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);

그리고:

const pageLoadParams = getItemFromStorage('CheckOutPageReload');
if (pageLoadParams) {
  this.btnLoginNumOne = pageLoadParams[0];
  this.btnLoginEdit = pageLoadParams[1];
}

확장 정의:String+Extension.ts

interface String {
  toBoolean(): boolean
}

String.prototype.toBoolean = function (): boolean {
  switch (this) {
    case 'true':
    case '1':
    case 'on':
    case 'yes':
      return true
    default:
      return false
  }
}

또한 '@/path/to/String+'을 사용할 파일을 Import합니다.확장'

이 함수는 문자열을 부울로 변환합니다.

export const stringToBoolean = (str: string | null | undefined) => {
    if (!str) {
        return false
    }
    if (typeof str === "string") {
        return !["0", "false", "no", "n", "null", "undefined", "nil"].includes(str.toLowerCase().trim())
    }
    return Boolean(str)
}

이것이 가장 정확하다고 생각합니다.

function parseBoolean(value?: string | number | boolean | null) {
    value = value?.toString().toLowerCase();
    return value === 'true' || value === '1';
}

<<<!!>를 사용해 주세요.>> 연산자:

const Text1 = ""
const Text2 = "there is a text"

console.log(!!Text1) // false
console.log(!!Text2) // true

bang 연산자가 문자열에 유효한 부울 값을 알고 있는 경우 bang 연산자를 사용해 볼 수도 있습니다.예를 들어,

let trueAsString = 'true';

let convertedStringToBool = !!trueAsString;

사용할 수 있습니다.

let s: string = "true";
let b: boolean = Boolean(s);

Boolean("true")도 작업을 수행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/52017809/how-to-convert-string-to-boolean-in-typescript-angular-4

반응형