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

时间:2014-06-18 04:55:34

标签: 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}

2 个答案:

答案 0 :(得分:0)

你的方法正常工作,因为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);

答案 1 :(得分:-1)

我认为你没有在正确的字符串对象上调用它,而是在String类上调用它,这会导致错误,因为replaceAll()不是String的静态方法} class

对我来说这很好用

String str1,str2;
str1 = "Hussain:Akhtar:Wahid:Ghouri";
str2 = str1.replaceAll(":", "\":\"");
System.out.println(str1);
System.out.println(str2);

<强>输出

  

侯赛因:阿赫塔尔:瓦希德:Ghouri

     

侯赛因 “:” 阿赫塔尔 “:” 瓦希德 “:” Ghouri