日期:2014-05-19  浏览次数:20686 次

怎么把字符串内的子字符串替换掉?
字符串如下:张三;李四;王??;赵六

如何找到王??,并替换为王五?

我的思路是找到“王”字的位置,然后找到前面和后面的;号,然后替换。

但是王??原来是王嫄,因为“嫄”字在jsp里是乱码,所以不知道会转成什么样的字符。

有什么好办法能把王??替换成王五吗?



------解决方案--------------------
/**
* 字符串替换函数,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;
}

网上搜的一个
------解决方案--------------------
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);


结果:
张三;李四;王??;赵六
张三;李四;王五?;赵六
-----------------------------运行试过了

------解决方案--------------------
给个思路:使用正则表达式来抓取,把抓取到的数据进行替换或者其他的操作,并不需要像LZ以及LS大神做的那么麻烦,又要获取位置啊,然后在SubString啊这些东西,建议好好去看下正则吧,相信我,有效果的!
------解决方案--------------------
String ss = "张三;李四;王??;赵六";
String pp = "(?<=王).+(?=;)";
System.out.println(ss.replaceAll(pp, "五"));
------解决方案--------------------
应该王和;之间不管是什么乱码,有多少个,都能替换成 王五 的,你试试。。。
------解决方案--------------------
探讨

应该王和;之间不管是什么乱码,有多少个,都能替换成 王五 的,你试试。。。

------解决方案--------------------
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);
}[align=left][/align][align=left][/align]
------解决方案--------------------
..怎么这么复杂?

如果你确定那个字符串是 "王??";

那么就好办。

String name = "张三;李四;王??;赵六";

name = name.replace("王??", "王五");

System.out.println(name);