有下面一个程序:
有这样一个字符串: ssssssskkhh<a href="http://www.1ju.org">hhhh</a>bbbbbeeeee
现在想把hh 替换成xx, 但链接里面的文字不进行替换, 
就变成下面这个字符串
ssssssskkxx<a href="http://www.1ju.org">hhhh</a>bbbbbeeeee
用算法怎么实现呢?

解决方案 »

  1.   

    String str = "ssssssskkhh <a href=\"http://www.1ju.org\">hhhh </a>bbbbbeeeee ";
    String replaced = str.replace("ssssssskkhh", "ssssssskkxx");
      

  2.   

    转成char数组  自己写replace方法  遇到<></>标签跳过之间的字符就是了  自己写吧。
      

  3.   

    先声明我是 菜鸟~~~ 别笑话我                StringBuffer sb =new StringBuffer();
    String str="ssssssskkhh <a href='http://www.1ju.org'>hhhh </a>bbbbbeeeee";

    for(int i=0;i<str.length();i++){
    if(i>str.indexOf("<")&&i<str.lastIndexOf(">")){
    sb.append(str.charAt(i));
    }else if(str.charAt(i)=='h'){
    sb.append('x');
    }else{
    sb.append(str.charAt(i));
    }
    }

    System.out.println(sb.toString());
      

  4.   

    用正则,不要用replace,replace一有特殊字符哭都来不及
      

  5.   


    String pattern ="\\w*\\s*\\w*hh\\w*\\s*\\w*<(([/][^a])|([^/][\\s\\S]))";
    String str = "adsfhhdd  dkjojfdhdd<div>sdfshhsdfsf</div>ssssssskkhh <a href=\"http://www.1ju.org\">hhhh </a>bbbbbeeeee ";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(str);
    StringBuffer sb = new StringBuffer();
    while(m.find()){
    m.appendReplacement(sb, m.group().replaceAll("h", "x"));
    }
    m.appendTail(sb);
    System.out.println(sb.toString());