使用javascript从字符串中删除双引号[重复]
Posted
技术标签:
【中文标题】使用javascript从字符串中删除双引号[重复]【英文标题】:remove double quotes from string using javascript [duplicate] 【发布时间】:2014-12-15 05:21:59 【问题描述】:我需要替换字符串中的双引号,在这种情况下,字符串声明为变量,如下所示
var string = "false";
我需要这样转换,
var str = false;
因为我需要布尔值。
这个我已经试过了,
var string= data.creditAllowed;
var str= string.replace(/"/g, '\\"');
但我有过这样的经历,
str = "false";
【问题讨论】:
如果您确定它始终是字符串“true”或“false”,则只需使用===
匹配它。
如果都是true
或false
,那么你可以简单地使用var str = (string == "true");
双引号不是您输入字符串的一部分。
var str = string === 'false' ? false : true;
会是更好的解决方案。
@Andy:你可以放弃? false : true
【参考方案1】:
我认为您应该考虑为什么该值是“false”而不是 false。
该值在哪里分配,是否有任何理由不能将其分配为正确的布尔值?
否则你可以这样做:
function isStrTrueOrFalse(string) return !string.toLowerCase().match(/false/);
这样任何“假”的字符串都会返回假。任何其他字符串都返回 true。 这是因为“str”是真的。不管内容是什么。
您也可以在正则表达式中使用i
标志,而不是.toLowerCase()
:
function isStrTrueOrFalse(string) return !string.match(/false/i);
如 cmets 中所述。
【讨论】:
您可以在正则表达式中使用i
标志,而不是toLowerCase()
【参考方案2】:
您被否决的原因是您误解了 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
【讨论】:
请解释反对意见 这不是您将随机输入解析为布尔值的方式... 好。这不是问题要问的。 那么就return input === "true"
。
我的回答不是解析布尔字符串的最佳方法,而是解决导致问题的误解。如果有人有这个真正的问题,那么值得解决潜在的困惑。此外,我的回答使解析错误输入的问题变得显而易见,并迫使提问者思考它们。以上是关于使用javascript从字符串中删除双引号[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 JavaScript 变量中删除第一个和最后一个双引号?
使用 regexp_extract 从 BigQuery 中删除单引号和双引号