怎么把字符串内的子字符串替换掉? 字符串如下:张三;李四;王??;赵六如何找到王??,并替换为王五?我的思路是找到“王”字的位置,然后找到前面和后面的;号,然后替换。但是王??原来是王嫄,因为“嫄”字在jsp里是乱码,所以不知道会转成什么样的字符。有什么好办法能把王??替换成王五吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /*** 字符串替换函数,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); } ..怎么这么复杂?如果你确定那个字符串是 "王??";那么就好办。String name = "张三;李四;王??;赵六";name = name.replace("王??", "王五");System.out.println(name); java软件高级工程师应具备怎样的知识体系? 二维数据的创建 SSH大数据量查询·怎么优化啊··大虾帮忙 struts的no getter method错误,我彻底没辙了 求救:关于求一个已知元素名的元素的父元素(在线等) struts多模块提交表单的问题 新来的,帮小弟一下。本地接口和远程接口的联系和区别!!! 请教servlet结构! 各位大虾,什么是WebService?我只懂jsp,servlet和简单的ejb,怎么用webservice做一个简单的例子 wildfly启动错误,尚且没有解决方案! 求SCBCD(310-091)学习资料 log4j使用困惑
* 字符串替换函数,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;
}网上搜的一个
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);
结果:
张三;李四;王??;赵六
张三;李四;王五?;赵六
-----------------------------运行试过了
String pp = "(?<=王).+(?=;)";
System.out.println(ss.replaceAll(pp, "五"));
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);
}