繁体   English   中英

解析带有int的字符串并浮点到数组

[英]Parse a string with int and float to an array

我有一个转换为数组的字符串:

var data = "[[1, 2, 3,], [3, 2, 1]]";
var array = JSON.parse(data.replace(/,\s*]/g, ']'));

我需要能够处理浮点数,即这种形式的输入:

var data = "[[2.,23.,1.5904], [4.,23,1.6208]]";

在尝试执行以下操作时,使用浏览器控制台:

var ar = JSON.parse(data.replace(/,\\s*]/g, ']'));

我收到此错误:

SyntaxError: JSON.parse: unterminated fractional number at line 1 column 5 of the JSON data

我猜想它与JSON.parse()的regexp有关,但是我对regexp的了解还不强,所以我没有任何线索。

我已经试过了: https : //regexone.com/ ,它实际上帮助了我很多理解,但是我仍然无法解决我的问题。

这个问题是我先前问题(已解决)的扩展:

使用数组数组转换数组的字符串

当时我没有想到的是,我还需要能够处理浮点数

您可以使用以下方法快速解决此问题

data.replace(/\.,/g, ".0,)

这会将2.,每个.,替换为2.0,

或者你可以做

data.replace(/\.,/g, ",")

删除逗号前的点。

问题是JSON需要在点后加一个数字。

正确的JSON将是这样的:

var data = "[[2.0,23.0,1.5904], [4.0,23,1.6208]]";

因此,您必须输出完整的浮点数(如果您可以控制输出)或解析字符串以将零附加到所有点,如下所示:

data.replace(/\.,/g, ".0,").replace(/\.]/g, ".0]");

请注意,我们还需要查找[ ]附近的点,而不仅仅是逗号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM