【问题标题】:remove double quotes from string using javascript [duplicate]使用javascript从字符串中删除双引号[重复]
【发布时间】: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

标签: javascript jquery regex


【解决方案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"
  • 我的回答不是解析布​​尔字符串的最佳方法,而是解决导致问题的误解。如果有人有这个真正的问题,那么值得解决潜在的困惑。此外,我的回答使解析错误输入的问题变得显而易见,并迫使提问者思考它们。
猜你喜欢
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2013-10-09
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多