2010-12-17 45 views
5

Así que si deseaba sustituir todos los números con un valor dado, tan sólo pudiera utilizarArgumentos Java expresiones regulares

"hello8".replaceAll("[1-9]", "!"); 

hola!

¿Hay alguna forma de obtener el número que realmente se está combinando y agregarlo a la cadena?

p. Ej. !

hola 8

Respuesta

7

Una opción es la creación de un grupo de captura:

"hello8".replaceAll("([1-9])", "!$1"); 

Otra opción es utilizar $0, lo que significa que todo el partido:

"hello8".replaceAll("[1-9]", "!$0"); 

Véase también: regular-expressions.info/java

+0

Tengo que esperar 5 minutos para exceptuar una respuesta perfectamente buena ... –

1

Usted puede hacer algo como esto

"hello8".replaceAll("([1-9])", "!$1"); 

Ver javadoc

0

Aquí tienes!

String s = "hello8"; 
String y = null; 
String t = null; 
Pattern p = Pattern.compile("[1-9]"); 
Matcher m = p.matcher(s); 
while(m.find()) { 
    y = (m.group()); 
    t = "!"+y; 
    s = s.replace(y.toString(), t.toString()); 
} 
System.out.println(s); 
Cuestiones relacionadas