Java正则表达式替换双引号和单引号
我被喂了一根绳子,看起来像:Java正则表达式替换双引号和单引号,java,regex,Java,Regex,我被喂了一根绳子,看起来像: "lang":"fr","fizz":"1","buzz":"Thank you so much." 真正的字符串很长,但遵循逗号分隔的“键”:“值”对的模式。我想去掉键s周围的所有双引号,并用单引号替换所有值s周围的双引号,这样我的字符串将如下所示: lang:'fr',fizz:'1',buzz:'Thank you so much.' 我的最佳尝试: kvString = kvString.replaceAll("\"*\":", "*:"); kvStr
"lang":"fr","fizz":"1","buzz":"Thank you so much."
真正的字符串很长,但遵循逗号分隔的“键”:“值”
对的模式。我想去掉键
s周围的所有双引号,并用单引号替换所有值
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."
谁能看出我哪里做错了?提前感谢。您要做的是使用正则表达式将逗号分隔的字符串拆分为一组关键字-值对。每个逗号分隔的字符串的格式为“关键字”:“值”,您要做的是将其转换为关键字:“值”
String str = "\"lang\":\"fr\",\"fizz\":\"1\",\"buzz\":\"Thank you so much.\"";
System.out.println(str.replaceAll ("\"([^\"]*)\":\"([^\"]*)\"", "$1:'$2'"));
为了做到这一点,您必须让正则表达式记住关键字和值,然后在replaceAll的输出中将字符串的这些部分放回另一个字符串中
此组提供有关组的详细信息。还有这个