我正在喂一个看起来像这样的字符串:

"lang":"fr","fizz":"1","buzz":"Thank you so much."


实际的字符串很长,但是遵循这种以逗号分隔的"key":"value"对的模式。我想去除key周围的所有双引号,并且我想用单引号替换所有value周围的双引号,以便我的字符串如下所示:

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."


有人可以发现我要去哪里错吗?提前致谢。

最佳答案

String str = "\"lang\":\"fr\",\"fizz\":\"1\",\"buzz\":\"Thank you so much.\"";
System.out.println(str.replaceAll ("\"([^\"]*)\":\"([^\"]*)\"", "$1:'$2'"));

09-30 16:56