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

时间:2011-09-06 10:24:27

标签: java regex

我想用*字符替换Java String中的所有字符。所以它应该是什么字符无关紧要,应该用*替换。

我知道互联网上有大量的例子,但没有一个可以取代每一个角色而且我已经尝试过但没有成功。

9 个答案:

答案 0 :(得分:55)

Java 11及更高版本

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

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

Java 10及更早版本

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

保留换行符。

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

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

(?s)与任何内容都不匹配,只会激活DOTALL模式,这使.也匹配\n

答案 1 :(得分:17)

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

普通Java< 8版本:

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

普通Java&gt; = 8版本:

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

使用Guava

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

使用Commons / Lang

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

答案 2 :(得分:5)

System.out.println("foobar".replaceAll(".", "*"));

答案 3 :(得分:3)

public String allStar(String s) {
    StringBuilder sb = new StringBuilder(s.length());
    for (int i = 0; i < s.length(); i++) {
        sb.append('*');
    }
    return sb.toString();
}

答案 4 :(得分:1)

如何使用* =最后一个字符串char的数量创建一个新字符串?

StringBuffer bf = new StringBuffer();
for (int i = 0; i < source.length(); i++ ) {
    bf.append('*');
}

答案 5 :(得分:1)

可能还有其他更快/更好的方法,但您可以使用字符串缓冲区和for循环:

public String stringToAsterisk(String input) {
    if (input == null) return "";

    StringBuffer sb = new StringBuffer();
    for (int x = 0; x < input.length(); x++) {
        sb.append("*");
    }
    return sb.toString();
}

如果你的应用程序是单线程的,你可以使用StringBuilder,但它不是线程安全的。

我不确定这是否会更快:

public String stringToAsterisk(String input) {
    if (input == null) return "";

    int length = input.length();
    char[] chars = new char[length];
    while (length > 0) chars[--length] = "*";
    return new String(chars);
}

答案 6 :(得分:1)

没有任何外部库,也没有自己的循环,你可以这样做:

String input = "Hello";
char[] ca = new char[input.length()];
Arrays.fill(ca, '*');
String output = new String(ca);

BTW,Arrays.fill()String(char [])都非常快。

答案 7 :(得分:0)

递归方法

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="list">
  <option value="1">Spot Launch</option>
  <option value="2">More Parkour Atlas</option>
  <option value="3">UpTown Spot</option>
  <option value="4">Handle Robot Reimagined for Logistics</option>
  <option value="5">What's new, Atlas?</option>
</select>

<br><br>

<div id="content"></div>
<h1 id="headline"></h1>
<div id="description"></div>

答案 8 :(得分:0)

    String text = "Hello World";
    System.out.println( text.replaceAll( "[A-Za-z0-9]", "*" ) );

输出:***** *****

相关问题