日期:2014-05-17 浏览次数:20965 次
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author cstur4
*/
public class CSDN {
public static void main(String[] args) {
String src = "邮箱:aaaa@sina.com , 电话:86-020-9696968,网址:www.sina.com; 请联系我们;";
List<String> marks = new ArrayList<String>();
marks.add("邮箱");
marks.add("电话");
marks.add("Email");
marks.add("网址");
StringBuilder sb = new StringBuilder();
sb.append("(");
for(String s:marks)
sb.append(s+"|");
sb.deleteCharAt(sb.length()-1);
sb.append(")[^,;,;]+");
System.out.println(sb);
StringBuffer des = new StringBuffer();
Matcher m = Pattern.compile(sb.toString()).matcher(src);
while(m.find())
{
System.out.println(m.group());
m.appendReplacement(des, "$1: **********");
}
m.appendTail(des);
System.out.println(des);
}
}
------解决方案--------------------
可以通过写一个专门的替换类来实现。
------解决方案--------------------
sorry,没看清。那就用正则表达式+string.replaceAll.比如
String source ="Email:abcdefg@zzz.com; " ;
String result=source.replaceAll("[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\\.][a-z]{2,3}([\\.][a-z]{2})?","******");
System.out.println(result);
------解决方案--------------------
用户在输入的时候发布消息。
最后在显示的时候需要做的就是。
第一:从数据库查询出刚才用户发布的消息。
第二:把消息封装在一个list里面可以和Map进行组装也就是List<Map>。
第三:遍历该list获取map的key后进行逻辑判断,也就是if(null!=map.get("邮箱)){
map.replace(“可以用正则”,"*****");
}
第四:返回过滤后的list。发送到前台用jstl表达式进行遍历。
方法不止这个。也可以在前台具体处理,具体问题具体分析。
------解决方案--------------------