2014-10-20 2 views
-2
내가 좋아하는 변수로 선언이 경우 문자열, 문자열에서 따옴표를 교체해야

를 사용하여 문자열에서 따옴표를 제거 I는 다음과 같이 변환이 필요자바 스크립트

var string = "false"; 

,

var str = false; 

때문에 아래 부울 값이 필요합니다.

이 이미 시도이며,

var string= data.creditAllowed; 
var str= string.replace(/"/g, '\\"'); 

하지만이 같은 얻을 수 있고,

str = "false"; 
+0

항상 "true"또는 "false"문자열 인 경우 '==='를 사용하여 일치시킵니다. – Joseph

+0

'true '또는'false'에 관한 것이면'var str = (string == "true");' – Regent

+1

큰 따옴표는 입력 문자열의 일부가 아닙니다. –

답변

1

당신이 아래로 투표를하고있는 이유는이 방식 유형을 잘못 이해 한 것입니다 자바 스크립트에서 사용됩니다. 다음 코드 :

var x = "thing"; 

는 문자 thing를 포함하는 문자열을 만들고, 그 변수 x을 결합한다. 문자열에는 따옴표가 없습니다. 따옴표는 문자열을 저장하려는 파서에 대한 메시지입니다.

이 값을 콘솔에 기록 할 때, 값을 둘러싼 값을 따옴표로 묶어 문자열로 표시하므로 따옴표로 묶여 나타납니다. 이 따옴표는 저장되지 않습니다.

대체 코드가 작동하지 않는 이유는 먼저 문자열에 따옴표가 없다는 것입니다.

var y = "\"thing\""; 

또는

var z = '"thing"'; 

는 당신은 그것에 따옴표 문자열이 있습니다

는 다음과 같은 쓴 경우.

true이 포함 된 문자열을 구문 분석하면됩니다. 가장 빠른 방법은 아마도 다음과 같습니다.

function parseBool(input) { 
    if (input == "true") { return true; } 
    else if (input == "false") { return false; } 
    else return null; // or false, or throw exception, or whatever 
} 
+0

은 downvote를 설명한다. – Joe

+0

그건 부울에 대한 무작위 입력을 구문 분석하는 방법이 아니야 ... – Cerbrus

+1

좋습니다. 그것은 질문이 요구하는 것이 아닙니다. – Joe

1

나는 왜 값이 false 대신 "false"인지 생각해야한다고 생각합니다.

이 값은 어디에 할당되며 적절한 부울로 할당 할 수없는 이유가 있습니까?

function isStrTrueOrFalse(string) { return !string.toLowerCase().match(/false/);} 

그런 식으로 "거짓 false"false를 반환하는 임의의 문자열 :

그렇지 않으면 당신은 이런 식으로 뭔가를 할 수 있습니다. 다른 문자열은 true를 반환합니다. "str"이 true이기 때문입니다. 내용이 무엇이든 상관 없습니다.

는 또한 .toLowerCase() 대신, 정규식에 i 플래그를 사용할 수 있습니다

function isStrTrueOrFalse(string) { return !string.match(/false/i);} 

는 의견에 설명한 바와 같이.

+2

'toLowerCase() '대신에 정규 표현식에서'i' 플래그를 사용할 수 있습니다 – Cerbrus

+0

사실입니다 :) –

관련 문제