Java 字符串:如何在所有出现的字符周围插入双引号
我有一个字符串,其中:出现多次。我希望:的每一次出现都用双引号括起来,比如:而不截断它周围的数据 我已尝试使用String.replaceAll:,\:\;但它会截断以下字符: 如何在不截断以下字符的情况下将所有发生的:括起来: 编辑:- 我的字符串:-Java 字符串:如何在所有出现的字符周围插入双引号,java,regex,string,replace,insert,Java,Regex,String,Replace,Insert,我有一个字符串,其中:出现多次。我希望:的每一次出现都用双引号括起来,比如:而不截断它周围的数据 我已尝试使用String.replaceAll:,\:\;但它会截断以下字符: 如何在不截断以下字符的情况下将所有发生的:括起来: 编辑:- 我的字符串:- {key1:value1,key2:value2,key3:{key4:value4,key5:value5,key6:{key7:{key8:value8}}},key9:value9} 更具可读性的表格:- { key1:valu
{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,第二个参数作为替换字符串 例如:
System.out.println("abc : pqr".replaceAll(":", "\":\""));
输出
replaceAll不会更改实际字符串,它只返回新替换的字符串
你需要分配它
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);
我认为您不是在正确的string对象上调用它,而是在string类上调用它,这将导致错误,因为replaceAll不是string类的静态方法 这对我来说很好
String str1,str2;
str1 = "Hussain:Akhtar:Wahid:Ghouri";
str2 = str1.replaceAll(":", "\":\"");
System.out.println(str1);
System.out.println(str2);
输出
侯赛因:阿赫塔:瓦希德:古里
侯赛因:阿赫塔:瓦希德:古里
但它会截断周围的字符:这意味着什么?有什么例子吗?调用replaceAll没什么错,你是在String类上调用它吗?它不是String类的静态方法,在其他字符串上调用它[status norepro]不是DV'er,但你最初的问题并没有反映它已经演变成什么。因此,这个问题无法重现,总体答案只是在暗箱操作,正确生成json是否比尝试破解它更好?我不知道为什么有人投了反对票。虽然我无法解决我的问题,但我可能无法在试图使其简单化的同时将其弄清楚,这是我的缺点。但我刚刚编辑了我的问题,并准备至少向上投票表决你的答案。@Zarah:thanx对于向上投票,将审查你的问题和我的ans,但我仍在等待向下投票人的回应,这对我来说是值得学习的。可以有一个名为String的变量,所以String.replaceAll。。。实际上可以编译并运行。2.这完全可能是字符串。replaceAll:,\:\;是一个例子,字符串实际上不是变量的名称。3.该程序显然是编译并运行的,否则OP将无法发现字符正在被删除。@user3580294:1:可能会声明一个名为“String”的变量,但这不是预期的。因此,我采用了另一种方法,2:我也在说may她调用了错误的对象,他说:我自己告诉我,它工作得非常好,没有任何错误,我的观点是,你的猜测是完全无效的。如果OP尝试以静态方法调用replaceAll,问题将大不相同,因为代码永远不会运行,所以OP永远不会发现字符被删除。我没有否决,我不知道是谁否决了,为什么否决,但我至少可以否决你的答案。
String str1,str2;
str1 = "Hussain:Akhtar:Wahid:Ghouri";
str2 = str1.replaceAll(":", "\":\"");
System.out.println(str1);
System.out.println(str2);