如何将 Java 字符串中的所有字符替换为星号

2022-09-01 09:12:36

我想用字符替换Java字符串中的所有字符。因此,它是什么字符并不重要,应该用.**

我知道互联网上有很多例子,但没有一个可以取代每个角色的例子,我已经尝试过自己,但没有成功。


答案 1

Java 11 及更高版本

str = "*".repeat(str.length());

注意:这会将换行符替换为 。如果要保留,请参阅下面的解决方案。\n*\n

Java 10 及更早版本

str = str.replaceAll(".", "*");

这将保留换行符。

要在 Java 10 及更早版本中将换行符替换为换行符,您可以使用:*

str = str.replaceAll("(?s).", "*");

不匹配任何东西,但激活DOTALL模式,这也使匹配。(?s).\n


答案 2

根本不使用正则表达式,计算字符串长度,并返回相应数量的星星。

普通Java< 8版本:

int len = str.length();
StringBuilder sb = new StringBuilder(len);
for(int i = =; i < len; i++){
    sb.append('*');
}
return sb.toString();

纯 Java >= 8 版本:

int len = str.length();
return IntStream.range(0, n).mapToObj(i -> "*").collect(Collectors.joining());

使用番石榴

return Strings.repeat("*", str.length());
// OR
return CharMatcher.ANY.replaceFrom(str, '*');

使用共享资源/语言

return StringUtils.repeat("*", str.length());