繁体   English   中英

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

[英]Remove double quotes from the beginning and the end of decimal numbers inside a string

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

"{"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, '')我设法摆脱了数字开头的双引号,但无法弄清楚最后做报价。

$1替换/"(\\d[.]\\d+)"/g $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}}'

对于提到的字符串,可以使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM