我需要从字符串中替换双引号,在这种情况下,字符串声明为变量,如下所示
var string = "false";
我需要像这样转换,
var str = false;
因为我需要布尔值。
这是我已经尝试过的,
var string= data.creditAllowed;
var str= string.replace(/"/g, '\\"');
但我已经这样了,
str = "false";
答案 0 :(得分:1)
您被拒绝投票的原因是您误解了JavaScript中使用类型的方式。以下代码:
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
}
答案 1 :(得分:1)
我认为你应该考虑为什么价值是"假"而不是假。
分配的值在哪里,是否有任何理由不能将其指定为适当的布尔值?
否则你可以这样做:
function isStrTrueOrFalse(string) { return !string.toLowerCase().match(/false/);}
那样的任何字符串都是" false"返回false。任何其他字符串返回true。 这是因为" str"是真的。无论内容是什么。
你也可以在正则表达式中使用i
标志,而不是.toLowerCase()
:
function isStrTrueOrFalse(string) { return !string.match(/false/i);}
如评论中所述。