2011-03-10 10 views
14

Estoy tratando de reemplazar un carácter de espacio en un guión que tengo en mi cadena.Reemplazar espacio para Guión

String replaceText = "AT AT"; 
replaceText.replace(' ', '-'); 

pero cuando hago esto, parece que no puedo reemplazar el personaje. Probé el método replaceAll() y tampoco funciona.

++++++ respuesta +++++++

siento mi error .. el resultado de la programación de tarde noche :(

gracias por la respuesta, probablemente, no puedo contestar todas, así que se compruebe la primera respuesta

replaceText = replaceText.replace(' ', '-'); 
+1

Creo que las numerosas respuestas a continuación Cuerdas de estrés son inmutables. :) –

+1

@Brent: hmmm, tal vez necesito hacer que mi respuesta se destaque más: ¡texto más grande y más audaz! –

+0

6 minutos más para verificar una respuesta.Maldita sea, odio esto :( – ben

Respuesta

29
replaceText = replaceText.replace(' ', '-'); 

Las cadenas se immutable, no pueden ser cambiados después de la creación. Todos los métodos que de alguna manera modi Si una cadena devolverá una nueva cadena con las modificaciones incorporadas.

5

replace and replaceAll métodos devuelve una Cadena con el resultado reemplazado. ¿Está utilizando el valor devuelto o esperando que cambie el String replaceText? Si es el último, no verá el cambio, porque Strings es immutable.

String replaceText = "AT AT"; 
String replaced = replaceText.replace(' ', '-'); 

// replaced will be "AT-AT", but replaceText will NOT change 
5

El método de sustituir devuelve una cadena, por lo que necesita para volver a asignar su variable de cadena decir

String replaceText = "AT AT";       
replaceText = replaceText.replace(' ', '-'); 
10

cadenas son inmutables.

Debe guardar el valor devuelto por replace(). Si desea reemplazar más de una ocurrencia, use replaceAll().

String replaceText = "AT AT"; 
replaceText = replaceText.replaceAll(" ", "-"); 

Como @Mark Peters puntos en los comentarios, replace(Char, Char) es suficiente (y más rápido) para reemplazar todas las ocurrencias.

String replaceText = "AT AT"; 
replaceText = replaceText.replace(' ', '-'); 

En caso de que este hecho le molesta: immutability is a Good Thing.

+0

¿Las cadenas son inmutables?: P –

+0

@Rob, hmmmmmm ... No sé ... ¿probablemente no? –

+4

Probablemente no lo sean ... pero ese gran mensaje en negrita me hace preguntarme. – Cristian

3

cadenas son inmutables. Es necesario utilizar el valor de retorno de reemplazar:

replaceText = replaceText.replace(' ', '-'); 
0

Si está reemplazando muchas cadenas que desee considerar el uso de StringBuilder para el rendimiento.

String replaceText = "AT AT"; 
StringBuilder sb = new StringBuilder(replaceText); 
sb.Replace(' ', '-'); 
1
/*You can use below method pass your String parameter and get result as String spaces replaced with hyphen*/ 
    private static String replaceSpaceWithHypn(String str) { 
    if (str != null && str.trim().length() > 0) { 
     str = str.toLowerCase(); 
     String patternStr = "\\s+"; 
     String replaceStr = "-"; 
     Pattern pattern = Pattern.compile(patternStr); 
     Matcher matcher = pattern.matcher(str); 
     str = matcher.replaceAll(replaceStr); 
     patternStr = "\\s"; 
     replaceStr = "-"; 
     pattern = Pattern.compile(patternStr); 
     matcher = pattern.matcher(str); 
     str = matcher.replaceAll(replaceStr); 
    } 
    return str; 
} 
Cuestiones relacionadas