微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用 X 替换每个下划线

如何解决用 X 替换每个下划线

用例:

输入:“___Test_String”

输出:“XXXTest_String”

我想用 X 替换所有起始下划线。 每个下划线的捕获应替换为相应的 X。

条件

字符串可能以下划线开头,也可能不以下划线开头。如果它不以下划线开头,则保持原样。

我试过了:

replaceAll("[_]","X")  = XXXTestXString - It replaced all the underscores.
replaceAll("^[_]+","X") = XTestXString - Replaced all the starting underscores with a single X.
replaceFirst("_","X") = X__Test_String - Just replaced the first underscore.

我知道使用非正则表达式方式很容易实现这一点,但如果可能的话,我想要一个正则表达式解决方案。

任何帮助将不胜感激。

解决方法

您可以使用 replaceAll("\\G_","X") 来完成。

\G 匹配器的意思是“前一个匹配的结束”,当然这意味着第一次匹配的“输入的开始”。请参阅 Pattern 的 javadoc。另见Regular-Expressions.info

只要在前一个匹配之后紧跟一个下划线,正则表达式就会保持匹配。它将一次匹配一个下划线,因此每个下划线都单独替换为 X

一旦找到第一个非下划线,匹配结束,所以 tS 之间嵌入的下划线不会匹配。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。