从字符串内的十进制数字的开头和结尾删除双引号

时间:2014-07-30 15:34:29

标签: javascript regex

我有以下字符串,并希望删除十进制数字前面和末尾的所有双引号,并保留其他引号。

"{"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, '')我设法在数字的开头摆脱双引号,但无法弄清楚如何在结尾处做引号。

2 个答案:

答案 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);