本文主要介绍Java中的不同的Jdk版中替换字符串中字符的方法,主要包括Jdk11,Jdk10,jdk8,本文中示例代码就是将字符串中所有字符替换成星号(*)。

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模式)