我在使用 parseInt() 时遇到了一些奇怪的行为。
webSocket.onmessage = function (event) {
var raw = event.data;
alert(raw);
var data = raw.split(":");
alert("lat:\"" + data[0] + "\" lon:\"" + data[1] + "\"");
var x = parseInt(data[0]);
var y = parseInt(data[1]);
alert("lat:" + x + " lon:" + y);
}
第一个警报输出:100:100 - 这是从服务器发送的字符串。
第二个警报输出:lat:"100"lon:"100"- 没问题
然而,第三个警报输出:lat:1 lon:NaN
这可能是什么原因造成的?
更新:
问题是服务器端的编码生成了一些不可见的不需要的字符。我更新了服务器代码,问题消失了。 Working solution .
最佳答案
我的猜测是,您的数据中存在不可打印的字符,如空格、制表符等,这就是拆分后得到 NaN
的原因。
您可以使用regex
获取如下数据。使用这种方式,您不必担心不可打印的字符,因为 regex
只选择数字。
var raw = '100:100 ';
var data = raw.match(/\d+/g);
var x = parseInt(data[0], 10);
var y = parseInt(data[1], 10);
document.write('x=' + x + ' y=' + y);
上面的 regex
将从 raw
字符串中选择所有数字。
关于Javascript - parseInt 为 WebSocket 数据返回奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985108/