使用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”,则只需使用=== 匹配它。 如果都是truefalse,那么你可以简单地使用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 中删除单引号和双引号

在javascript和html中对单引号进行操作[重复]

我想从字符串中删除双引号

从使用 MySQL _FETCH 设置的字符串中删除双引号的最佳方法是啥?

JavaScript中的双引号与单引号[重复]