我得到了一个字符串,看起来像这样:
"lang":"fr","fizz":"1","buzz":"Thank you so much."
实际的字符串很长,但遵循这种逗号分隔的"key":"value"
对模式。我想去掉key
s两边的所有双引号,并将所有value
s两边的双引号替换为单引号,这样我的字符串将如下所示:
lang:'fr',fizz:'1',buzz:'Thank you so much.'
我最大的努力:
kvString = kvString.replaceAll("\"*\":", "*:");
kvString = kvString.replaceAll(":\"*\"", ":'*'");
System.out.println(kvString);
当我运行这个命令时,我得到的kvString
代码如下:
"lang*:'*'fr","fizz*:'*1","buzz*:'*Thank you so much."
有没有人能发现我哪里错了?提前谢谢。
发布于 2013-02-15 13:10:50
String str = "\"lang\":\"fr\",\"fizz\":\"1\",\"buzz\":\"Thank you so much.\"";
System.out.println(str.replaceAll ("\"([^\"]*)\":\"([^\"]*)\"", "$1:'$2'"));
发布于 2013-02-15 13:24:24
您要做的是使用regex将逗号分隔的字符串分解为一组关键字值对。每个逗号分隔的字符串都具有"keyword":"value“格式,您要做的是将其转换为keyword:'value‘。
为此,您必须让正则表达式记住关键字和值,然后在replaceAll的输出中将字符串的这些部分放回另一个字符串中。
此stackoverflow, non cpaturing组提供了有关组的更多信息。还有这个article also talks about grouping syntax。
https://stackoverflow.com/questions/14895477
复制