2011-09-06 21 views

Respuesta

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

Nota: Esto no va a sustituir a los saltos de línea (\n) con *. Para ello, tendrá que utilizar

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

El (?s) no coincide con cualquier cosa menos activa DOTALL modo que haga . también coinciden con \n.

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

No utilice regex en absoluto, cuente la longitud de cadena y devuelva el número correspondiente de estrellas.

normal Java Versión:

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

Usando Guava:

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

Usando Commons/Lang:

return StringUtils.repeat("*", str.length()); 
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(); 
} 
1

¿Cómo abt crear una nueva cadena con el número de * = número de la última cadena de caracteres?

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

Puede haber otras más rápidas/mejores maneras de hacerlo, pero sólo podría utilizar un búfer de cadena y un bucle 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(); 
} 

Si su aplicación es de un solo subproceso, puede utilizar StringBuilder en cambio, pero no es seguro para subprocesos.

No estoy seguro de si esto podría ser más rápido:

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); 
} 
0

Sin ninguna biblioteca externa y sin su propio bucle, que puede hacer:

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

Por cierto, tanto Arrays.fill() y String(char []) son realmente rápido.

Cuestiones relacionadas