【问题标题】:how to check if string is true in JavaScript issue如何在 JavaScript 问题中检查字符串是否为真
【发布时间】:2021-08-14 03:38:35
【问题描述】:

我正在尝试将字符串转换为 javascript 中的布尔值,但我不知道该怎么做,并且来自互联网的解决方案似乎不起作用

我有一个名为 data 的变量

console.log(data)
console.log(data === "true")
console.log(typeof data)
console.log(typeof "true")

这是我的输出代码

true
false
string
string

这是输出 我也试过 == 但它也不起作用

更新: 我将字符串转换为字节数组

(12) [0, 116, 0, 114, 0, 117, 0, 101, 0, 13, 0, 10]
(8) [0, 116, 0, 114, 0, 117, 0, 101]

这是两个字节数组。上一个是我的变量,下一个是新创建的字符串“true”的数组。谁能说出这种差异来自哪里?

【问题讨论】:

  • 提示:“JavaScript”或“JS”,但从不“Java 脚本”。
  • 这需要更多信息。您是否试图找出字符串是否包含单词“True”或“False”并将其解析为布尔值?或者你只是想知道一个字符串是否真实。就像一个字符串有内容一样?因为它们是不同的东西。
  • 您的意见是什么? data 的哪些值需要处理?
  • 我认为关于这种情况如何发生的解释很少,它们都以“有人故意试图破坏你的代码”开头,包括“你表现得不够好”。这将是例如字符串中的空格或奇数 unicode、自变异值等。
  • 看起来你的字符串中有控制字符。特别是回车和换行:petefreitag.com/item/863.cfm

标签: javascript string boolean


【解决方案1】:

根据您更新的答案,data === "true" 将检查您的字符串是否与预期的一样等于 "true"

您得到false 作为输出的原因是data 的值并不严格等于"true",而是"true\r\n"

如果您需要检查字符串是否包含"true",您可以使用正则表达式或简单索引。

console.log(data.indexOf("true") !== -1)

【讨论】:

  • 如果他有 ES6 他也可以这样做:data.includes('true')
  • 好吧,公平的警告,如果字符串是“真”或“真”或“真假”indexOf("true") 将返回一个正数。如果您必须验证字符串是严格的 true 但希望允许控制字符,则您可能希望删除控制字符。
【解决方案2】:
var val = 'true';
console.log(val.trim().toLowerCase()==='true');

除非我遗漏了更明显的东西?

【讨论】:

  • 输出列出了“true”,而不是“True”,当然之前的一些代码可能已经改变了console.log
  • 我明白...我正在举例说明在这种情况下处理的可能性。只是为了报道。
猜你喜欢
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2011-09-11
  • 2014-04-01
  • 2019-06-28
  • 2017-11-03
相关资源
最近更新 更多