发布于2024-12-11 17:31 阅读(921) 评论(0) 点赞(26) 收藏(5)
我对 Java 字符串的 replaceAll 函数有疑问
replaceAll("regex", "replacement");
工作正常,但每当我的“替换”字符串包含“$0”、“$1”等子字符串时,它就会通过用相应的匹配组替换这些 $x 而产生问题。
例如
input ="NAME";
input.replaceAll("NAME", "HAR$0I");
将产生字符串“HARNAMEI”,因为替换字符串包含“$0”,它将被匹配组“NAME”替换。我该如何覆盖这一性质。我只需要将结果字符串作为“HAR$0I”即可。
我转义了 $。即我将替换字符串转换为“HAR\\$0I”,效果很好。但我正在寻找 Java 中的任何方法,可以为我在正则表达式世界中具有特殊含义的所有此类字符执行此操作。
java.lang.String.replaceAll()的文档说:
请注意,替换字符串中的反斜杠 () 和美元符号 ($) 可能会导致结果与将其视为文字替换字符串时不同;请参阅 Matcher.replaceAll。如果需要,请使用Matcher.quoteReplacement(java.lang.String)来抑制这些字符的特殊含义。
String quoteReplacement(String s)的文档指出:
返回指定字符串的文字替换字符串。此方法生成一个字符串,该字符串将用作 Matcher 类的 appendReplacement 方法中的文字替换 s。生成的字符串将与 s 中被视为文字序列的字符序列匹配。斜线 ('\') 和美元符号 ('$') 将不具有特殊含义。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/694591/4ebf9535e68cdc32e60e/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!