replaceFirst(String regex, String replacement)
如果regex参数中有‘正则中的特殊符号‘,如我遇到的就是‘+’,那么该方法有可能失败,因为这些符号作为条件而不是内容去匹配了。
解决方法是对这些特殊符号进行转义。举个例子:
String img = "<img src=\"000\" ><img data-src=\"111\" width=\"\" src=\"222\"> xxx <img src=\"000\" > xxx <img data-src=\"3+33\" width=\"\" src=\"44+44\">";
img = img.replaceFirst("44+44", "333");
System.out.println(img);
img = img.replaceFirst("44+44".replace("+", "\\+"), "333");
System.out.println(img);
输出如下:
<img src="000" ><img data-src="111" width="" src="222"> xxx <img src="000" > xxx <img data-src="3+33" width="" src="44+44">
<img src="000" ><img data-src="111" width="" src="222"> xxx <img src="000" > xxx <img data-src="3+33" width="" src="333">
这里,第一次替换失败了,内容没有变化。
第二次先对'+'进行了转义,成功!