2017-03-13 54 views
1

我有转换为数组的字符串:解析为int一个字符串,并漂浮到数组

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

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

正确的JSON会是这个样子:

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

所以你必须要么输出全浮点数(如果你有在输出控制)或解析追加零到所有的点,像这样的字符串:

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

请注意,我们还需要寻找点附近],不仅逗号。

2

您可以快速与

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

解决这个问题这将替换每.,2.,2.0,

或者你也可以做

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

从而消除了逗号前的点。