java中replace的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中replace的问题相关的知识,希望对你有一定的参考价值。

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;



为什么我的repalece 没用?

字符串常量是不变的,

比如String s="123敏感";
不管你后面对s做任何操作。 s还是s这个对象,不变。

你要对s重新赋值:
s=s.replace("敏感","");

那么这个时候 s就已经变成被替换后的值了。这就是你想要的,记住String这个特性就好了。
参考技术A 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();
while(i.hasNext())//把if改成while
s=((Fileter)(i.next())).doFileter(s);

return
s;

参考技术B class HtmlFileter implements Fileter
public String doFileter(String s)
s.replace('<','[');
s.replace('>',']');
return s;


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

Java中replace和replaceall的区别

1>replace的参数是char和CharSequence,既可以支持字符替换,也可以支持字符串替换。
2>replaceall参数是regex, replacement,regex表示是正则表达式。
  String str = "wel2come3Souhe";
  String str1 = str.replace("e", "E");
  String str3 = str.replace(‘e‘, ‘E‘);
  System.out.println("replace字符串==" + str1);
  System.out.println("replace字符=="+str3);
  String str2 = str.replaceAll("\\d", "a");//将数字替换a
  System.out.println("replaceAll==" + str2);
输出结果:
replace字符串==wEl2comE3SouhE
replace字符==wEl2comE3SouhE
replaceAll==welacomeaSouhe
比较结果:replace替换字符和字符串都一样,replaceall是根据正则表达式来进行替换的








以上是关于java中replace的问题的主要内容,如果未能解决你的问题,请参考以下文章

java 中replace方法?

新手求助java的replace问题

关于JAVA的replace方法的问题

java中的replace函数如何使用

Java 中的 replace() 和 replaceAll()

java 中replace用法