1.问题描述:怎么特么替换不起作用了?
代码如下:
String url = logoDelParam.getUrl();
url.replace(postAddr, ftpHostAddr);
然后发现替换不了!
2.查阅资料后改成如下写法:
String url = logoDelParam.getUrl();
url=url.replace(postAddr, ftpHostAddr);
然后就有效果了!
3.为什么是这样?
看源码:
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
这段代码翻译一下就是:用来替换字符串中符合条件的部分,并且返回一个新的字符串!
这一点非常重要,意思就是并没有在目标对象上直接动手脚,而是自己生成了一个新的对象!
4.如果就想让我的第一种写法生效源码应该怎么写?
public String replace(CharSequence target, CharSequence replacement) {
this=Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
return this;
}
这样就能保证我操作的是当前对象,返回的也是当前对象了!