提问人:kaaas 提问时间:3/21/2017 最后编辑:Bohemiankaaas 更新时间:3/21/2017 访问量:1366
替换引号之间的一些特殊字符
Replacing some special characters between quotes
问:
我想替换 JSON 字符串中的点和单撇号字符,即仅在引用时。使用此输入:
String json = "{\"someJsonMap\":{\"with.dot.s\":1.0,\"'with.dots'.and.apostroph's.\":20.001}}";
我想把这个:
{"someJsonMap":{"with.dot.s":1.0,"with.dots'.and.apostroph's":20.001}}
进入这个:
{"someJsonMap":{"withdots":1.0,"withdotsandapostrophs":20.001}}
我感谢任何帮助、解决方案或解释。
答:
2赞
Bohemian
3/21/2017
#1
如果从未有过转义的引号,则使用“展望”来查找后面的奇数个引号。奇数表示您在引号内。
json = json.replaceAll("['.](?=(([^\"]*\"){2})*[^\"]*\"[^\"]*$)", "");
正则表达式的火车残骸断言,通过消耗引号对的倍数(0-n 通过),其余字符只有一个引号,后面跟着奇数个引号*
([^\"]*\"){2}
[^\"]*\"[^\"]*$
如果有转义引号,你基本上不能使用正则表达式。
评论
0赞
kaaas
3/21/2017
谢谢!由于您的解释,我接受了您的答案,并且按预期工作。即使我的用例中不应该有任何转义引号,我也不能确定这一点,因此将使用 JSON 解析器。
评论
{"with.dot.and\"quote": 1}