永发信息网

java中replace的问题

答案:6  悬赏:70  手机版
解决时间 2021-05-06 13:10

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没有作用

最佳答案

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


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


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

全部回答

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

这样就行了

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

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

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

单引号改成双引号试试

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

替换后要从新赋值

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么莪会晚上看了鬼片都卜敢睡觉觉?
三水车站到惠州多久
从长途汽车站到汽车厂东路碧水尚景做几路公交
北京美天升胶带厂的电话是多少
市丸银的瞳孔色到底是嘛颜色啊?动画的怎么有
CF兵器达人活动的奖品什么时候发
给我个绝刀改黑斩月的补丁?
英雄岛里,想买云游的4本英雄秘籍一共要多少
指南针里的气泡要怎么处置?
靖西市健康教育所地址在哪,我要去那里办事
2000元以下可以买到什么样的踏板摩托车?
加入问问团队怎么连标签都没有了
人大脑的储存量有多少?
芦荟胶怎么用.之前用不用涂滋养水然后可以化
这周的快男谁有将会被淘汰?
推荐资讯
有知道这款索尼MP5是什么型号的吗?
梦幻西游没密保卡序列号要怎么解除?
双硬盘速度好慢
怎样才能放下心中的一切?
上海动漫活动
得了手足口病医疗保险怎么赔?
急!Eminem!谁有这首Mockingbird Remix Feat
思念会因为时间流逝而改变吗?
QQ农场里的金币有什么用啊?
我女朋友20岁小便有泡沫啊要紧的
假设,如果你很爱的那个人,她(他)让你去悬
如何感谢生日祝福,微信朋友圈应该怎么说祝福
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?