Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式替换双引号和单引号_Java_Regex - Fatal编程技术网

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的输出中将字符串的这些部分放回另一个字符串中

此组提供有关组的详细信息。还有这个