是否有一个正则表达式我可以用来查找JSON字符串中的所有数字并用双引号替换它们?
例如,在下面的JSON字符串中,我想用双引号替换Id和Phone值 .
String jsonString = " [
{
"FirstName": "abc",
"Email" : "a@a.com",
"Id" : 1,
"Phone" : 1234567890,
"Date": "2 May 2016 23:59:59"
},
{
"FirstName": "xyz",
"Email" : "b@b.com",
"Id" : 2,
"Phone" : 9876543210,
"Date": "3 May 2016 23:59:59"
}
] ";
我想获得以下输出:
[
{
"FirstName":"abc",
"Email" : "a@a.com",
"Id" : "1",
"Phone" : "1234567890",
"Date": "2 May 2016 23:59:59"
},
{
"FirstName":"xyz",
"Email" : "b@b.com",
"Id" : "2",
"Phone" : "9876543210",
"Date": "3 May 2016 23:59:59"
}
]
我试过下面的行,但它不起作用 . 有任何想法吗?
jsonString = jsonString.replaceAll("=[ ]*([\\d]+)", "= \"$1\"");
2 回答
你做错了多件事 .
你的正则表达式搜索以
=
而不是:
开头的匹配项要捕获白色(空格),请使用
\s
这是你正确的正则表达式:https://regex101.com/r/sRDXMP/2/
这是您的固定代码:
jsonString = jsonString.replaceAll(":\\s([\\d]+)", ": \"$1\"");
用
:
替换正则表达式中的=
此外,您应该使用空格选择器而不是
[ ]
.jsonString = jsonString.replaceAll(":\\s*(\\d+)", ": \"$1\"");