我有一个字符串,其中 :
发生多次。我想要 :
的每次出现用双引号括起来,例如 ":"
而不截断其周围的数据。
我尝试使用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/