2017-03-13 53 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, ",") 

從而消除了逗號前的點。