打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
记录一个在工作中遇到的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"的字符串,而不会解析为正则。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
replace和replaceAll的区别
java replaceall 用法
正则表达式提取/过滤字符串中的汉字
java中String字符串的替换函数:replace与replaceAll的区别
理解 Java 正则表达式怪异的 \ 和 \\,让您见怪不怪 | 隔叶黄莺 Unmi Bl...
正则表达式的替换功能:replaceAll
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服