Javascript - parseInt 为 WebSocket 数据返回奇怪的值

标签 javascript websocket parseint

我在使用 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/

相关文章:

javascript - 为什么 JavaScript 的 parseInt(0.0000005) 打印 "5"?

javascript - javascript 中的 parseInt 方法返回垃圾值

javascript - Webstorm ES6 named import getting cannot resolve symbol 错误

Javascript 碰撞不起作用

javascript - 如何在现有选项卡中引入内容

javascript - 仅将 CDN 用于 Bootstrap JS 部分有什么缺点吗?

python - flask-socketio wss中的握手响应为空

python - 高速公路,离开 onMessage block

go - 使用 golang 和 gorilla websocket 库,为什么 WriteJson 会返回错误?

javascript - 遇到 JavaScript Array.indexOf 的奇怪现象(在 Node.js 中)