我需要分割字符串:
"[true,'3/5', 5],[true, '4/5', 5],[true, '5/5', 5],[true, '6/5', 5],[true, '7/5', 5],[true, '8/5', 5]"
在二维数组中:
[[true, '3/5', 5], [true, '4/5', 5], [true, '5/5', 5], [true, '6/5', 5], [true, '7/5', 5], [true, '8/5', 5]]
我尝试过:
var months = '[2010,1,2],[2010,3,2],[2011,4,2],[2011,3,2]';
var monthArray2d = [];
months.replace(/(\d+)_(\d+)/g, function($0, $1, $2, $3) {
monthArray2d.push([parseInt($1), parseInt($2), parseInt($3)]);
});
console.log(monthArray2d);
但没有成功
答案 0 :(得分:2)
因此,请使用JSON.parse,因为您的字符串的字符串周围带有“”,因此需要将其更改为“”,以便replace语句可以处理它。假设您的数据中没有多余的引号。
var str = "[true,'3/5',5],[true,'4/5',5],[true,'5/5',5],[true,'6/5',5],[true,'7/5',5],[true,'8/5',5]"
var arr = JSON.parse("[" + str.replace(/'/g, '"') + "]")
console.log(arr)
答案 1 :(得分:2)
由于您的字符串几乎是有效的JSON,所以我只需将所有单引号更改为双引号,将其包装到数组中,然后解析整个结构:
const source_string = "[true,'3/5',5],[true,'4/5',5],[true,'5/5',5],[true,'6/5',5],[true,'7/5',5],[true,'8/5',5]";
const valid_json = source_string.replace( /'/g, '"' );
const array_wrapped = '[' + valid_json + ']';
const output = JSON.parse( array_wrapped );
console.log( output );