字符串“802.11 auth”上的parseInt不会返回我的预期

时间:2014-08-02 23:05:18

标签: javascript json node.js

我正在编写一个解析器,它将命令的输出转换为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

2 个答案:

答案 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