为了保证网络信息的健康,下列filter方法为聊天室实现了所谓“脏话过滤”功能。其中x存储原文,v中装入了若干禁止使用的词汇。比如“猪头”什么的。Filter方法把脏话替换为“***”,并返回过滤后的串。请补充填空处。
public static String filter(String x, Vector v)
{
for(int i=0; i<v.size(); i++)
x = __________________________________________;
return x;
}

解决方案 »

  1.   

    x.replaceAll(v.get(i),"***");
    LZ 结贴~
      

  2.   


    public class Test02
    { public static void main(String[] args)
    {
    String str="abcdljldjfabljfdlaabjsl";
    System.out.println(str.replaceAll("ab", ""));
    }}这是例子
    答案:x=x.replaceAll((String)v.get(i),"");
      

  3.   

    正则表达式,详解一楼public String replaceAll(String regex,String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果:
    Pattern.compile(regex).matcher(str).replaceAll(repl)
    参数:
    regex – 用来匹配此字符串的正则表达式
    返回:得到的 String
    抛出: PatternSyntaxException – 如果正则表达式的语法无效。
    实际应用:
    public static void main(String[] arg) throws OgnlException {
    String s =”sdf\\a\\aa”;
    //把s中的反斜杠\ 替换为\\
    System.out.println(s);
    System.out.println(s.replaceAll(“\\\\”, “\\\\\\\\”));
    System.out.println(s.replace(“\\”, “\\\\”));
    }
    可以看出上面两种都返回相同的替换结果。
    这 里的关键是String.replaceAll()是用regular expression 来作为参数的。但是java本身的字符串对于转义符\也有类似的处理。首先,java会把“\\\\”解释成一个字符串(其中包含两个char)——“\ \”这个就是你在JDK的文档里看到的。
    接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。
    换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll(‘\\’, ‘\\\\’); 就可以了
      

  4.   

    用String中的replace方法,中间可以用正则表达式;
      

  5.   

    用String中的方法即可以对付啦,貌似replace什么的
      

  6.   


    确实是应该用replaceAll。他可能连续录入N个“猪头”~~~
      

  7.   

    最终程序:
    import java.util.Vector;public class test_01 {
    private static final int i = 0;
    public static void main(String[]agrs ){
    String str = "习近平是中国未来主席";
    System.out.println(str.replaceAll("习近平", "***"));
    }
    public static String filter(String x,Vector v){
    for(int i = 0;i <= v.size();i++);
    x=x.replaceAll((String) v.get(i),"");
    return x;
    }
    }