1、Jdk8之前的版本替换方法
//直接生成目标字符串
int len = str.length();
StringBuilder sb = new StringBuilder(len);
for(int i = =; i < len; i++){
sb.append('*');
}
return sb.toString();
2、Jdk8及之后的版本替换方法
int len = str.length();
return IntStream.range(0, n).mapToObj(i -> "*").collect(Collectors.joining());
3、使用 Guava替换方法
return Strings.repeat("*", str.length());
//或者
return CharMatcher.ANY.replaceFrom(str, '*');
4、使用Commons/Lang
return StringUtils.repeat("*", str.length());
5、Jdk11以及之后的版本替换方法
//直接生成目标字符串
str = "*".repeat(str.length());
注意:这将替换换行符\n用*。如果要保留\n,请参考下面的解决方案。
6、JDK10及更早版本
//这个可以保留换行符
str = str.replaceAll(".", "*");
要*在Java 10及更早版本中替换换行符,您可以使用:
str = str.replaceAll("(?s).", "*");
该(?s)不匹配任何东西,但激活DOTALL模式,这使得.也匹配\n。
相关文档:Java中正则表达式(regex)匹配多行(Pattern.MULTILINE和Pattern.DOTALL模式)