import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;public class KeyWordFilter {
private String s7 = "";
public static void main(String[] args) throws IOException {
                   KeyWordFilter test = new KeyWordFilter();
System.out.println(test.replaceDiGui("敏感词测试:奥巴马对华政策 ? 布什? "));
}


public static String replaceString(String s){
String s3 = null;
for(int ii = 0; ii < s.length(); ii++){
s3 +="*";
}
return s3;
}


public String  replaceDiGui(String s){
String s2 = "奥巴马,布什,FUCK,SHIT";
String[] minGanCi = s2.split(",");
for (int j = 0; j < minGanCi.length; j++) {
  if(s.indexOf(minGanCi[j]) > -1){
  s7 = s.replaceAll(minGanCi[j], replaceString(minGanCi[j]));
  replaceDiGui(s7);
  break;
  } 
}
return s7;
}
}期望的运行结果是:  敏感词测试:***对华政策 ? **? 
运行的结果怎么是:  敏感词测试:null***对华政策 ? null**?怎么会是这个样子的 ?“null”是怎么出现的 ?  请大虾指教下 

解决方案 »

  1.   


    String s3 = null;
    改成
    String s3 ="";
    是这样么
      

  2.   

       我是来接分的,这个问题很好解决你在过滤起里写一段控制编码规则的代码把你的编码规则改为ISO-8859-1的就会出现你的 期望的运行结果是: 敏感词测试:***对华政策 ? **?
    代码写的没问题,把编码格式改写就好了。还有你这是J2ee里的问题怎么发到Java里来了。
      

  3.   

       如果是中文乱码的话 把你的编码格式改成utf-8的就可以了。
    [code=Ja]/**把gb2312转化成ISO-8859-1*/ 
      public static String toISO(String str){ 
        try { 
          return str = new String(str.getBytes("GB2312"),"ISO-8859-1"); 
        } catch (Exception e) {e.printStackTrace();} 
        return str; 
      } 
      /**把ISO-8859-1转化成gb2312*/ 
      public static String toGB(String str){ 
        try { 
          return str = new String(str.getBytes("ISO-8859-1"),"GB2312"); 
        } catch (Exception e) {e.printStackTrace();} 
        return str; 
      }[/code]
    你可以把这两段代码写在自己的工具类中,也可以直接用在程序代码中。