从数据库读取字符串,把这些字符串自动生成正则表达式然后判断页面读过来的内容是否与正则匹配,匹配的话就替换成*.
这这么写啊 ?假设数据库读来的字符串我都放在LIST中了。。这些字符串可能中文,也可能英文现在我们就假设现在的list里面是“FUCK,妈比”等怎么自动生成正则啊然后把读过来的内容替换成*。急等。。

解决方案 »

  1.   

    I just don't get u requirement...Could u please describe it more clear?
      

  2.   

    就是说要屏蔽的字段我都保存在数据库一个表里面
    现在我已经从表里把这些字段取出来了,放在一个list中现在怎在一个方法中自动生成一条正则,来匹配这些从数据库读出来的字段???然后把从页面读来的内容与这条正则比较。。有相同的就替换成*
      

  3.   

    这个就不能用正则表达式了,因为你的这个要替换的内容是很多的,并且应该是随时都会增加的.
    我下面用伪代码的形式给你演示下思路:    private List<String> replaceWords = new ArrayList<String>();
        replaceWords.add("FUCK");replaceWords.add("妈比"); ......
        for(String List中每个字符串 : List) {
    String 替换后的字符串 = this.replaceIllegalWords(List中每个字符串,replaceWords,"*")
        }
        private String replaceIllegalWords(String str, List<String> replaceWords, String placeholder) {
            for(String replaceWord : replaceWords) {
        if(str.indexOf(replaceWord)!=-1)
                   str = str.replaceAll(replaceWord, placeholder);        
            }
            return str;    } 
     
      

  4.   

    就是一个替换,没看出来什么地方得用到正则。for(int i = 0, k = list.size(); i < k; i++) {
        str = str.replace(list.get(i), "*");
    }
      

  5.   

    List用'|'连接就是正则了,里面的字符都加前缀'\\'然后replaceAll调用
      

  6.   

    全部采用 | 连接,如果需要过滤的字符串很多的话,效率是非常低下的!StringBuilder sb = new StringBuilder();
    for(int i = 0, k = list.size(); i++) {
        if(i > 0) {
             sb.append("|");
        }
        sb.append(Pattern.quote(list.get(i)));
    }
    str = str.replaceAll(sb.toString(), "*");你可以比较一下两者的效率,找一个快一点的。
      

  7.   

    String 的replace方法中就支持正则表达式.
    str.replace("fuck|妈比", "*");
      

  8.   

    楼主好好的看看 replaceAll(String reg,String str);的参数,
    即使很简单的字符串 String regex = "fuck|shit"; 也可说是正则表达式,
    如果你们领导要学习正则,叫他来拜 “ 火龙果@宝家族”为师吧,绝对大师级的