我有一个字符串,:
多次出现。我希望每个:
的出现都被双引号括起来,例如":"
而不截断它周围的数据。
我尝试使用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}
答案 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