永发信息网

java中replace的问题

答案:6  悬赏:70  手机版
解决时间 2021-05-06 13:10
  • 提问者网友:wodetian
  • 2021-05-06 01:50

import java.util.*;
public class StringTest{
public static void main(String[] args){
String s="敏感 <avbd> 我额度";
HtmlFileter hf=new HtmlFileter();
StringFileter sf=new StringFileter();
FileterList fl=new FileterList();
fl.add(hf).add(sf);
fl.doFileter(s);
String ss=hf.doFileter(s);
System.out.println(s);
System.out.println(ss);

}
}
interface Fileter{
String doFileter(String s);
}

class HtmlFileter implements Fileter{
public String doFileter(String s){
s.replace('<','[');
s.replace('>',']');
return s;
}
}

class StringFileter implements Fileter{
public String doFileter(String s){
//s.replace("敏感","");
return s;
}
}

class FileterList implements Fileter{
private ArrayList al=new ArrayList();
public FileterList add(Fileter f){
al.add(f);
return this;
}
public String doFileter(String s){
Iterator i=al.iterator();
if(i.hasNext()){
((Fileter)(i.next())).doFileter(s);
return s;
}
else{
return s;
}
}
}

为什么我的replace没有作用

最佳答案
  • 五星知识达人网友:山有枢
  • 2021-05-06 02:26

s=s.replace('<','[');第一次赋值时给了这个值
s=s.replace('>',']');第二次赋值时给了这个值


//s.replace("敏感","");下面这个是被你注释了的所以没有赋值成功return回去的是原来的值


replace之后返回一个新值,并改变了原来赋值的字符串,所以把结果赋值给我了变量s变量S的也随着改变初始值也变化了。

全部回答
  • 1楼网友:摆渡翁
  • 2021-05-06 05:26

s = s.replace("<","[").replace(">","]");

这样就行了

  • 2楼网友:低音帝王
  • 2021-05-06 05:20

replace替换后返回替换后的值,不改变被替换字符串的值,所以你要用重新接收一次

  • 3楼网友:七十二街
  • 2021-05-06 04:52

s=s.replace('<','['); s=s.replace('>',']');

replace之后返回一个新值,并不会改变原来的字符串,所以要把结果赋予原来的变量s。

  • 4楼网友:归鹤鸣
  • 2021-05-06 04:15
单引号改成双引号试试
  • 5楼网友:渊鱼
  • 2021-05-06 03:43

s=s.replace('<','[');

替换后要从新赋值

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯