记录一个在工作中遇到的replace和replaceall的问…

2020-04-07 16:01:26来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

记录一个在工作中遇到的replace和replaceall的问题:java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1

记录一个在工作中遇到的replace和replaceall的问题:java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1

接手了一个项目的维护,测试的第一天测试反馈报错,发我报错信息后,根据堆栈信息找到报错位置的代码如下:

param.replaceAll("\\" + text, "<span style='color:red;'>"+text+"</span>")+"</span>");

目的是想将某些字符串用红色进行展示,即将字符串替换成html。

报错的原因是replaceAll(String regex, String replacement)第一个参数为正则表达式,在解析正则表达式的时候上面的"\\"+text不满足解析条件比如\M 不是正则表达式,所以会报错。此处用replace即可。
根本原因是没有分清楚replace和replaceAll的区别,误以为replaceAll是替换字符串中满足条件的所有字符串。
实际上:
replace和replaceAll的共同点:都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串。

不同点是:replaceAll支持正则表达式,因此会对参数进行解析,如replaceAll("\\d", "XX"),会将数字替换成XX。而replace则不会,replace("\\d","XX")就是替换"\\d"的字符串,而不会解析为正则。


原文链接:https://www.cnblogs.com/youman/p/12654681.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java中使用RSA算法加密

下一篇:清明花了几天总结了多线程的知识点