为了保证网络信息的健康,下列filter方法为聊天室实现了所谓“脏话过滤”功能。其中x存储原文,v中装入了若干禁止使用的词汇。比如“猪头”什么的。Filter方法把脏话替换为“***”,并返回过滤后的串。请补充填空处。
public static String filter(String x, Vector v)
{
for(int i=0; i<v.size(); i++)
x = __________________________________________;
return x;
}
public static String filter(String x, Vector v)
{
for(int i=0; i<v.size(); i++)
x = __________________________________________;
return x;
}
LZ 结贴~
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),"");
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(‘\\’, ‘\\\\’); 就可以了
确实是应该用replaceAll。他可能连续录入N个“猪头”~~~
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;
}
}