记录一个在工作中遇到的replace和replaceall的问…
2020-04-07 16:01:26来源:博客园 阅读 ()
记录一个在工作中遇到的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算法加密
下一篇:清明花了几天总结了多线程的知识点
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
- 我可真是醉了,一个SpringBoot居然问了我30个问题 2020-06-08
- java对象指向问题 2020-06-07
- 呵呵,一个 bug 你改了两天?难吗? 2020-06-06
- 一个程序员的水平能差到什么程度?看到他我明白了! 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash