遇到一个replace方法坑的记录
今天在用replace方法时遇到了一个问题,想把‘/’替换成‘-’,发现替换字符不起作用,一开始还以为是转义字符的问题,最后发现其实是一个很蠢的问题,代码如下
public static void main(String []args) {
String s="aaa/bbb";
s.replace("/", "-");
System.out.println("s:"+s);
}
结果为:s:aaa/bbb
可以发现替换并没有起作用,为什么会这样呢,点进replace方法进去可以看到
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
replace方法是有返回值的,返回的是一个String类型的新字符串,所以我们输出原来的数组当然没有改变啦,将上面的方法改为
public static void main(String []args) {
String s="aaa/bbb";
String s1=s.replace("/", "-");
System.out.println("s1:"+s1);
}
结果为:s1:aaa-bbb
可以看到替换生效啦
问题很简单,但是也算是一个坑吧,在此与君共勉