一个串,里面含有一些"Hello",我想把非Hello的部分都换成?,这个怎么做呢?
"d293kdHello03kjdHello<?$fjwHello--+" -> "??????Hello?????Hello??????Hello???"
谢谢大家。

解决方案 »

  1.   

    一定需要正则么?
    replace 不可以么?
      

  2.   

    一定需要正则么?
    replace 不可以么?
      

  3.   

    方法有很多,
    就先给你说1中比较简单的吧。
    方法1:
    循环检测 字符串 
    每当indexOf的时候,字符串中出现的“hellow”的时候 。记录他的hellow 的开始位置以及结束位置  然后把这个位置之前的所有内容替换成? 然后将从刚才记录的结束位置在开始查询。方法2:
    通过 字符串的split(regex) 切割Hellow  然后进行替换 和 连接 就ok了。方法太多了。。自己先试验下这两种吧。。
    譬如正则也不错 有时间自己多看看吧。
      

  4.   

    最好你自己清楚正则的用法后再来。
    正则虽然可以做。但是并不能完全自己处理。
    因为正则式进行 字符串相似匹配。 也就是说。相似的。才可以替换。所以并不能一步就可以解决。还得借助于string的某些特定的方法才成 
    明白?
      

  5.   


    String temp = "d293kdHello03kjdHello <?$fjwHello--+";
       String res = temp.replaceAll("[^(Hello)]", "?");
       System.out.println(res);
      

  6.   


    这样是不行的,用String temp = "Hd293kdHello03kjdHello <?$fjwHello--+";试一下就知道了。[^(Hello)]匹配所有非H,e,l,l,o的字符。但是不能匹配非Hello的字符。正则表达式直接到不到非某个单词这个效果,还是需要自己处理。 
      

  7.   

    同行们
    来这里。帮我看下。
    他的问题已经解决了
    http://topic.csdn.net/u/20081016/14/636ef757-40ca-4165-b246-f0ec4a413ddc.html?1653316098
      

  8.   

    .replaceAll("Hello", "@@@@@"); 
    .replaceAll("[^@]", "?"); 
    .replaceAll("@@@@@", "Hello"); 
      

  9.   

    public static void main(String[] args){
       String temp = "Hd293kdHello03kjdHello <?$fjwHello--+";
       String[] res = temp.split("Hello");
       String result="";
       for(int i=0;i<res.length;i++){
       for(int j=0;j<res[i].length();j++){
       result+="?";
       }
       if(i<res.length-1)
       result+="Hello";
       }
       System.out.println(result);
       }