我正在编写一个解析器,它将命令的输出转换为JSON对象,我可以将其推送到实时日志记录和图形服务。一切都来自解析器作为字符串,我希望数字以数字形式出现,但我遇到了一个小问题。
我知道如果你使用一个不可解析的字符串,parseInt(string)会返回NaN。我遇到的问题是字符串'802.11 auth'可以通过parseInt解析为802,这绝对不是我想要的。
扫管笏做。我现在通过检查字符串中的最后一个字符来攻击它,但这是一个不太优雅的解决方案。blackjack:~ sent1nel$ cat whatever.js
console.log(parseInt("802.11 auth"));
blackjack:~ sent1nel$ node whatever.js
802
答案 0 :(得分:1)
您可以使用一元加运算符来转换字符串而不是解析它:
+"802.11" // 802.11
+"802.11 auth" // NaN
答案 1 :(得分:0)
如果您只想知道变量是否为数字:
var s = "802.11 auth";
s == +s
> false // the string s is not convertible into a number
var s2 = "802.11";
s2 == +s2
> true // the string s2 is convertible into a number
如果要提取数字:
var s = "802.11 auth";
var number1 = + s.match(/[\d.]/g).join(''); // 802.11
var number2 = Number(s.match(/[\d.]/g).join('')); // 802.11
如果您只想802
,可以使用parseInt()
:
var number3 = parseInt(s.match(/[\d.]/g).join('')); // 802