使用javascript从字符串中删除双引号

时间:2014-10-20 09:11:45

标签: javascript jquery regex

我需要从字符串中替换双引号,在这种情况下,字符串声明为变量,如下所示

var string = "false";

我需要像这样转换,

var str = false;

因为我需要布尔值。

这是我已经尝试过的,

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

但我已经这样了,

str = "false";

2 个答案:

答案 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);}

如评论中所述。