字符串如下:张三;李四;王??;赵六如何找到王??,并替换为王五?我的思路是找到“王”字的位置,然后找到前面和后面的;号,然后替换。但是王??原来是王嫄,因为“嫄”字在jsp里是乱码,所以不知道会转成什么样的字符。有什么好办法能把王??替换成王五吗?

解决方案 »

  1.   

    /**
    * 字符串替换函数,String的replace函数不能处理'|'符号
    *
    * @param strSource 被替换的源字符串
    * @param strFrom 要查找并替换的子字符串
    * @param strTo 要替换为的子字符串
    * @return 替换完成的字符串
    */
    public static String replace(String strSource, String strFrom, String strTo) {String strDest = "";
    int intFromLen = strFrom.length();
    int intPos;if (strFrom.equals("")) {
    return strSource;
    }
    while ((intPos = strSource.indexOf(strFrom)) != -1) {
    strDest = strDest + strSource.substring(0, intPos);
    strDest = strDest + strTo;
    strSource = strSource.substring(intPos + intFromLen);
    }
    strDest = strDest + strSource;
    return strDest;
    }网上搜的一个
      

  2.   

    String s = "张三;李四;王??;赵六";
    System.out.println(s);
    String s1= s.substring(0, s.indexOf("?")+1);
    String s2 = s.substring(s.indexOf("?")+1, s.length());
    s1 = s1.replace('?', '五');
    s=s1+s2;
    System.out.println(s);
    结果:
    张三;李四;王??;赵六
    张三;李四;王五?;赵六
    -----------------------------运行试过了
      

  3.   

    给个思路:使用正则表达式来抓取,把抓取到的数据进行替换或者其他的操作,并不需要像LZ以及LS大神做的那么麻烦,又要获取位置啊,然后在SubString啊这些东西,建议好好去看下正则吧,相信我,有效果的!
      

  4.   

    String ss = "张三;李四;王??;赵六";
    String pp = "(?<=王).+(?=;)";
    System.out.println(ss.replaceAll(pp, "五"));
      

  5.   

    public String replaceStr() {
    String name = "张三;李四;王??;赵六";
    StringBuffer sb = new StringBuffer();
    //分割字符
    String[] names = name.split(";");
    //找到包涵"?"并且包涵"王"
    for (String childName : names) {
    if (childName.contains("?") && childName.contains("王"))
    childName = "王五";
    sb.append(childName + ";");
    }
    return sb.toString().substring(0, sb.length() - 1);
    }
      

  6.   

    ..怎么这么复杂?如果你确定那个字符串是 "王??";那么就好办。String name = "张三;李四;王??;赵六";name = name.replace("王??", "王五");System.out.println(name);