【发布时间】:2021-08-11 14:47:19
【问题描述】:
我需要删除之前字符串化的 json 对象中数字之间的双引号。
这是最初的:
[ { "coucou": "Tolu", "salut": "55", "tata": "NORMAL", "loulou": "Tolu", "tutu": "NORMAL", "toto": "Tolu", "Baba": "24" }
, { "coucou": "TRUE", "salut": "128", "tata": "LOW", "loulou": "Tolu", "tutu": "LOW", "toto": "TRUE", "Baba": "7" }
, { "coucou": "Salut", "salut": "15.7", "tata": "LOW", "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-5" }
, { "coucou": "Salut", "salut": "-148", "tata": "LOW", "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-578" }
]
我使用的正则表达式是:
const regex2 = /"-?([0-9]+\.{0,1}[0-9]*)"/g
json = json.replace(regex2, '$1')
let json =
`[ { "coucou": "Tolu", "salut": "55", "tata": "NORMAL", "loulou": "Tolu", "tutu": "NORMAL", "toto": "Tolu", "Baba": "24" }
, { "coucou": "TRUE", "salut": "128", "tata": "LOW", "loulou": "Tolu", "tutu": "LOW", "toto": "TRUE", "Baba": "7" }
, { "coucou": "Salut", "salut": "15.7", "tata": "LOW", "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-5" }
, { "coucou": "Salut", "salut": "-148", "tata": "LOW", "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-578" }
]`
const regex2 = /"-?([0-9]+\.{0,1}[0-9]*)"/g
json = json.replace(regex2, '$1')
console.log( json)
但我得到的结果是,它也删除了否定运算符,因此它改变了我想要的应用程序的所有结果:
[ { "X0": "Tolu", "X1": 55, "X2": "NORMAL", "X3": "Tolu", "X4": "NORMAL", "X5": "Tolu", "X6": 24 }
, { "X0": "TRUE", "X1": 128, "X2": "LOW", "X3": "Tolu", "X4": "LOW", "X5": "TRUE", "X6": 7 }
, { "X0": "Salut", "X1": 15.7, "X2": "LOW", "X3": "Toli", "X4": "NORMAL", "X5": "toti", "X6": 5 }
, { "X0": "Salut", "X1": 148, "X2": "LOW", "X3": "Toli", "X4": "NORMAL", "X5": "toti", "X6": 578 }
]
有人知道如何在使用正则表达式删除数字周围的双引号时保存运算符吗?
【问题讨论】:
-
那么为什么不将
-?包含在第 1 组中呢?const regex2 = /"(-?\d*\.?\d+)"/g -
好的 @WiktorStribiżew 它工作得很好,非常感谢!
-
您不应该使用正则表达式来执行此操作。您应该在 字符串化之前解决这个问题。
-
但是
"coucou"没有改成"X0"....
标签: javascript json regex