是否可以使用正则表达式将字符串中的数字替换为'X'
等特定字符的数量? (即用"test3something8"
替换"testXXXsomethingXXXXXXXX"
)?
我知道我可以使用for-loop,但我正在寻找一种尽可能短的(正则表达式)单线解决方案(关于代码 - 高尔夫挑战 - 是的,我知道codegolf-SE,但这是一个普通的Java问题而不是代码高尔夫问题。)
String str = "test3something8".replaceAll("[1-9]", "X");
- > str = "testXsomethingX"
String str = "test3something8".replaceAll("([1-9])", "$1X");
- > str = "test3Xsomething8X"
n
个特定字符的数量:int n = 5; String str = new String(new char[n]).replace('\0', 'X');
- > str = "XXXXX"
int n = 5; String str = String.format("%1$"+n+"s", "").replace(' ', 'X');
- > str = "XXXXX"
; 我想要的是这样的事情(下面的代码显然不起作用,但它应该让我知道我想要实现什么 - 最好甚至更短):
String str = "test3Xsomething8X"
.replaceAll("([1-9])", new String(new char[new Integer("$1")]).replace('\0', 'X')));
// Result I want it to have: str = "testXXXsomethingXXXXXXXX"
正如我所说,上面的内容并不起作用,因为" $ 1"应该直接使用,所以现在它给出了
java.lang.NumberFormatException:对于输入字符串:" $ 1"
TL; DR:是否有人知道使用某个字符的数量替换字符串中的数字?
答案 0 :(得分:0)
如果你真的想把它作为一个班轮。可能的解决方案(更多地将其视为PoC)可能是使用Stream API。
testXXXsomethingXXXXXXXX
输出
{{1}}
注意尚未对性能,可扩展性,GC友好等进行调查。