首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java中如何替换第二个被匹配到的字符串

2013-03-13 
java中怎么替换第二个被匹配到的字符串?比如strsssegegegsssgege想把第二个匹配到的sss给替换掉,替换

java中怎么替换第二个被匹配到的字符串?
比如
str="sssegegegsssgege";
想把第二个匹配到的sss给替换掉,替换成hello
结果就是
str="sssegegeghellogege";
应该怎么弄?
[解决办法]


String str="sssegegegsssgege";
str=str.replaceAll("(sss)(.*?)(\\1)(.*?)", "$1$2hello$4");
System.out.println(str);

[解决办法]
正则表达式果然强大。当然如果没有接触过的话,下面这种方法可能更容易理解。


/**
 * 替换第二个匹配的目标子串
 * @param str 源字符串。
 * @param target 需要替换的目标子串。
 * @param replacement 需要替换成的字符串。
 * @return 将源字符串中出现的第二个target换成replacement后的字符串。
 * @throws NullPointerException 当任一参数为空时。
 * @throws Exception 找不到第二个匹配的字符串时。
 */
public static String replaceSecond(String str, String target,
String replacement) throws NullPointerException, Exception {
if (str == null 
[解决办法]
 target == null 
[解决办法]
 replacement == null)
throw new NullPointerException();
int index = str.indexOf(target);
if (index == -1)
throw new Exception("Not Found.");
index = str.indexOf(target, index + target.length());
if (index == -1)
throw new Exception("Not Found.");
String str1 = str.substring(0, index);
String str2 = str.substring(index);
str2 = str2.replaceFirst("sss", "hello");
return str1 + str2;
}

[解决办法]
引用:
引用:Java code?123String str="sssegegegsssgege";str=str.replaceAll("(sss)(.*?)(\\1)(.*?)", "$1$2hello$4");System.out.println(str);
麻烦问一下,为什么这样就不行了?
Java code?12345678    S……


话说因为你的img里面有需要转义的字符
str=str.replaceAll("(\\Q"+img+"\\E)(.*?)(\\1)(.*?)", "$1$2"+hello+"$4");


\Q \E之间的部分,代表里面的内容全是普通文本的引用,不要把它当作正则看待

热点排行