java - 字符串:如何在所有出现的字符周围插入双引号

标签 java regex string replace insert

我有一个字符串,其中 :发生多次。我想要 : 的每次出现用双引号括起来,例如 ":"而不截断其周围的数据。

我尝试使用String.replaceAll(":", "\":\"");但它会截断 : 周围的字符。

如何将所有出现的 : 括起来通过"不截断 : 周围的字符

<小时/>

编辑:-

我的字符串:-

{key1:value1,key2:value2,key3:{key4:value4,key5:value5,key6:{key7:{key8:value8}}},key9:value9}

更易读的表格:-

{
    key1:value1,
    key2:value2,
    key3:{
        key4:value4,
        key5:value5,
        key6:{
            key7:{
                key8:value8
            }

        }

    },
    key9:value9
}

我在做什么:-

responseString = responseString.replaceAll(":", "\":");// Put " before each occurance of :

responseString = responseString.replace(":[^\\Q{\\E]", ":\""); // Put " after each occurence of : except the ones preceded by {

输出:-

{key1":"alue1,key2":"alue2,key3":{key4":"alue4,key5":"alue5,key6":{key7":{key8":"alue8}}},key9":"alue9}

最佳答案

你的方法工作正常,因为replaceAll将第一个参数作为regExp,第二个参数作为替换String

例如:

System.out.println("abc : pqr".replaceAll(":", "\":\""));

输出

abc ":" pqr
<小时/>

replaceAll 不会更改实际的 String 它只是返回新替换的 String

您需要分配它。

String str="key1\":value1";
str=str.replaceAll(":", "\":\"");
<小时/>

你可以尝试这个简单的技巧。

String str="{key1:value1,key2:value2,key3:{key4:value4,key5:value5,key6:{key7:{key8:value8}}},key9:value9}";
str=str.replaceAll("(:\\{)", "-");//Replace :{ to -
str=str.replaceAll("[:]", "\":\"");//replace : to ""
str=str.replaceAll("-", ":{");//again replace - to :{
System.out.println(str);

关于java - 字符串:如何在所有出现的字符周围插入双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277307/

相关文章:

java - Java 中递增计数器并显示为零填充字符串

java - 这些 "if statements"可以简化吗?

java - 如何为 Eclipse 启用代码推荐器?

java - 是否可以从其终结器跟踪对象,以检测其他对象的终结器对对象的意外复活?

Java-重定向请求

python - 使用正则表达式查找大写字母不在句子开头的单词

java - 设置 RTC 工作项的 "Discussion"属性

regex - 2位或5位数字的正则表达式

Javascript 正则表达式 : Match anything but newlines (\r?\n)

java - 如何构造一个没有重复字符的字符串?