不管使用appendReplacement还是字符串的ReplaceAll,Replace等等这些方法的时候,如果你的replacement是拼出来的字符串,要小心里面是不是包含了正则表达式有特殊含义的字符,比如$,这个字符用来表示反向引用的组。
如果你的正则表达式中恰好有这个组,最终结果可能不是你想要的,如果这个组不存在,name就会抛出异常。
本来是要替换整句,期望的结果是$10 is cheap,实际结果变成了The0 is cheap
所以最好使用Matcher.quoteReplacement()方法来处理replacement中的字符串。
如果你的正则表达式中恰好有这个组,最终结果可能不是你想要的,如果这个组不存在,name就会抛出异常。
String source=“The price of this book is 10.”;
String replacement="$10 is cheap"
String result=source.replaceAll("(The) (price) (of) this book is 10.",replacement).
本来是要替换整句,期望的结果是$10 is cheap,实际结果变成了The0 is cheap
所以最好使用Matcher.quoteReplacement()方法来处理replacement中的字符串。
本文探讨了在使用正则表达式进行字符串替换时遇到的问题,特别是当replacement字符串包含特殊字符如$时可能出现的错误结果及异常。通过一个具体例子说明了如何避免这些问题,并推荐使用Matcher.quoteReplacement()方法。
1525

被折叠的 条评论
为什么被折叠?



