使用int和float将字符串解析为数组

时间:2017-03-13 09:46:53

标签: javascript arrays json

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

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()的正则表达有关,但我还没有强大的正则表达式,所以我没有线索。

我玩过这个:https://regexone.com/这实际上有助于理解,但我仍然无法解决我的问题。

这个问题是对我之前问题(已解决)的延伸:

Convert string of array, with array of array(s)

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

2 个答案:

答案 0 :(得分:2)

您可以使用

快速解决此问题
data.replace(/\.,/g, ".0,)

这会将.,中的2.,替换为2.0,

或者你可以做到

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

删除逗号之前的点。

答案 1 :(得分:2)

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

正确的JSON将是这样的:

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

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

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

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