用 X 替换每个下划线
Replace each underscore with a X
用例:
输入:“___Test_String”
输出:“XXXTest_String”
我想用 X 替换所有开始的下划线。
每个下划线的 catch 应该用相应的 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
. See also Regular-Expressions.info.
的 javadoc
只要前一个匹配项后面紧跟一个下划线,正则表达式就会继续匹配。它将一次匹配一个下划线,因此每个下划线都单独替换为 X
.
一旦找到第一个非下划线,则匹配结束,因此t
和S
之间嵌入的下划线将不会被匹配。
用例:
输入:“___Test_String”
输出:“XXXTest_String”
我想用 X 替换所有开始的下划线。 每个下划线的 catch 应该用相应的 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
. See also Regular-Expressions.info.
只要前一个匹配项后面紧跟一个下划线,正则表达式就会继续匹配。它将一次匹配一个下划线,因此每个下划线都单独替换为 X
.
一旦找到第一个非下划线,则匹配结束,因此t
和S
之间嵌入的下划线将不会被匹配。