我有以下字符串,并希望删除十进制数字前面和末尾的所有双引号,并保留其他引号。
"{"id":"default","values":{"level1":["0.0000","0.0000","0.0000"],"level2":["1.0000","1.0000","1.0000"], "score":"2.1100"}}"
应该是
"{"id":"default","values":{"level1":[0.0000,0.0000,0.0000],"level2":[1.0000,1.0000,1.0000], "score":2.1100}}"
使用replace(/\"(?=[0-9]\.[0-9]+)/g, '')
我设法在数字的开头摆脱双引号,但无法弄清楚如何在结尾处做引号。
答案 0 :(得分:3)
将/"(\d[.]\d+)"/g
替换为$1
。 $1
指的是第一个捕获组,即\d[.]\d+
(没有引号的内容)。 \d
只是[0-9]
的快捷方式。
> var str = '{"id":"default","values":{"level1":["0.0000","0.0000","0.0000"],"level2":["1.0000","1.0000","1.0000"], "score":"2.1100"}}';
undefined
> str.replace(/"(\d[.]\d+)"/g,"$1")
'{"id":"default","values":{"level1":[0.0000,0.0000,0.0000],"level2":[1.0000,1.0000,1.0000], "score":2.1100}}'
答案 1 :(得分:2)
对于上面提到的字符串,您可以使用JSON.parse()
将其解析为JavaScript对象,然后对需要考虑为浮点数的值使用parseFloat()
。
var str = '{"id":"default","values":{"level1":["0.0000","0.0000","0.0000"],"level2":["1.0000","1.0000","1.0000"], "score":"2.1100"}}';
str = JSON.parse(str);
str.values.level1 = str.values.level1.map(function(_item) { return parseFloat(_item); });
str.values.level2 = str.values.level2.map(function(_item) { return parseFloat(_item); });
str.values.score = parseFloat(str.values.score);
// if you need it back as a JSON string
str = JSON.stringify(str);