String badWords = "fuck/kao";
String content = "我喜欢fuck";
String result = "";
String words[] = badWords.split("/");
for (int i = 0; i < words.length; i++)
{
    result=content.replaceAll(words[i], "***");
}
//result=content.replaceAll("fuck", "***");
System.out.println(result);
为什么循环里面使用数组不能成功,而注释的那行能成功

解决方案 »

  1.   

    当然不会 了,你 String content = "我喜欢fuck";
    用 / 分割  能分的出来 东西 吗。不能,所以 不行。
      

  2.   


    tring badWords = "fuck/kao";
    String content = "我喜欢fuck";
    String result = "";
    String words[] = badWords.split("/");
    for (int i = 0; i < words.length; i++)
    {
    content=content.replaceAll(words[i], "***");
    }
    System.out.println(content);
      

  3.   

    数组也能成功,只是result最后赋值的和content的值是一样的,你把sysout放在for里面试试!
      

  4.   

    在JAVA中的数组和C++的数组不一样的啊
    再说了 你的STRING 对象 
    要是你的换成数据应该就可以了啊
      

  5.   

    public class Test {    public static void main(String[] args) {
    StringBuffer a = new StringBuffer("a");
    StringBuffer b = new StringBuffer("b"); System.out.println(operate(a, b));
    System.out.println("" + 'a' + 1);
    System.out.println('a' + 1);


    String badWords = "shift/kao";
    String content = "likeshift";
    String result = "";
    String words[] = badWords.split("/");
    System.out.println("words[0]="+ words[0]);
    System.out.println("words[1]="+ words[1]);
    for (int i = 0; i < words.length; i++)
    {
        result=content.replaceAll(words[i], "***");
    }
    //result=content.replaceAll("shift", "***");
    System.out.println(result);

    } static StringBuffer operate(StringBuffer x, StringBuffer y) {
    x.append(y);
    y = x;
    return y;
    }} 
    “/”是可以分割的。之后得
    words[0]=shift
    words[1]=kao在于
    for (int i = 0; i < words.length; i++)
    {
        result=content.replaceAll(words[i], "***");//这句
    }
    result=content.replaceAll(words[i], "***");//这句用conten replaceALl了2次。
    i = 0 时,第一次相当于
    result=content.replaceAll("shift", "***");--》result = like***
    i = 1 时,第二次相当于
    result=content.replaceAll("kao", "***");--》result = likeshift所以最后的result还是原来的content内容。没变噢
      

  6.   

    这个循环就两次
    第一次为
    result=content.replaceAll("fuck", "***");
    配皮和替换成功,此时result="我喜欢***"第二次为result=content.replaceAll("kao", "***");
    这句话相当于
    result=Pattern.compile(regex).matcher(content).replaceAll(repl)
    由于Pattern.compile(regex).matcher(content)匹配不成功,所以最后result=content=我喜欢fuck
      

  7.   

    第二次覆盖了第一次的值,第二次取到的是kao,二kao在content中没有。
      

  8.   

    过程中产生很多的String,不妨用Stringbuffer代替。
      

  9.   

    参考2楼可以到ide里面一步步调下