在Java中使用replace和replaceAll替换连续的相同字符
我想用中间的标记替换所有出现的两个连续逗号(“,”),但我发现无法替换第二个。代码如下:在Java中使用replace和replaceAll替换连续的相同字符,java,string,replace,replaceall,Java,String,Replace,Replaceall,我想用中间的标记替换所有出现的两个连续逗号(“,”),但我发现无法替换第二个。代码如下: String addresses = "a,,,b"; String b = addresses.replace(",,", ",EMPTYADDR,"); System.out.println(b); 我预计结果是: a,EMPTYADDR,EMPTYADDR,b 但是,我得到的是: a,EMPTYADDR,,b 如何更改代码以获得所需的结果?在replaceAll函数中传递基于查找的正则表达式。L
String addresses = "a,,,b";
String b = addresses.replace(",,", ",EMPTYADDR,");
System.out.println(b);
我预计结果是:
a,EMPTYADDR,EMPTYADDR,b
但是,我得到的是:
a,EMPTYADDR,,b
如何更改代码以获得所需的结果?在
replaceAll
函数中传递基于查找的正则表达式。Lookarounds不会使用任何字符,但会断言是否可能匹配
string.replaceAll("(?<=,)(?=,)", "EMPTYADDR");
string.replaceAll(“(?使用while
循环的简单非正则方法
public static void main(String[] args) {
String addresses = "a,,,b";
while (addresses.contains(",,")){
addresses = addresses.replace(",,", ",EMPTYADDR,");
}
System.out.println(addresses);
}
结果:
a,EMPTYADDR,EMPTYADDR,b
您还可以拆分字符串,填充空元素,然后使用string.join()
publicstaticvoidmain(字符串[]args){
字符串地址=“a,,,b”;
String[]片段=地址。拆分(“,”);
对于(int i=0;i
public static void main(String[] args) {
String addresses = "a,,,b";
String[] pieces = addresses.split(",");
for (int i = 0; i < pieces.length; i++) {
if (pieces[i].isEmpty()) {
pieces[i] = "EMPTYADDR";
}
}
addresses = String.join(",", pieces);
System.out.println(addresses);
}