2011-04-22 11 views
51

Tengo cadenas con algunos números y palabras en inglés y necesito traducirlas a mi lengua materna encontrándolas y reemplazándolas por una versión localizada de esta palabra. ¿Sabes cómo lograr fácilmente reemplazar palabras en una cadena?Android: ¿cómo reemplazar parte de una cadena por otra cuerda?

Gracias

Editar:

He tratado (parte de una cadena "a" debe sustituirse por "xyz"):

string.replace("to", "xyz") 

Pero no está funcionando ...

Respuesta

159

Está funcionando, pero no modificará el objeto llamante, sino que devolverá un nuevo String.
lo que sólo necesita para asignarlo a una nueva variable de cadena, o para sí mismo:

string = string.replace("to", "xyz"); 

o

String newString = string.replace("to", "xyz"); 

API Docs

public String replace (CharSequence target, CharSequence replacement) 

desde: Nivel API 1

Copia esta secuencia reemplazando apariciones de la secuencia de destino con otra secuencia. La cadena se procesa desde el principio hasta el final.

Parámetros

  • target la secuencia de reemplazar.
  • replacement la secuencia de reemplazo .

Devuelve la cadena resultante.
LanzamientosNullPointerException si el objetivo o el reemplazo son nulos.

+0

Gracias, eso es lo que estaba buscando – Waypoint

+2

@rekaszeru Gracias ... Su respuesta fue muy útil. –

+0

¿Cómo puedo reemplazar las cosas de múltiples? Por ejemplo, 'Reemplazar la letra h o l'? –

-2

Estás cometiendo un solo error.

utiliza replaceAll() funciona allí.

p. Ej.

String str = "Hi"; 
String str1 = "hello"; 
str.replaceAll(str, str1); 
+8

- Ni la función 'replaceAll()' cambia la cadena original, ¡como resultado devuelve la cadena procesada! – rekaszeru

1
String str = "to"; 
str.replace("to", "xyz"); 

hay que probarlo :)

1

puede ser interesante USTED:

en Java, objetos String son inmutables. Inmutable simplemente significa inmodificable o inmutable.

Una vez que se crea el objeto de cadena, sus datos o estado no se pueden cambiar, pero se crea un nuevo objeto de cadena.

-2

rekaszeru

Noté que usted comentó en 2011, pero pensé que debería escribir esta respuesta de todos modos, por si alguien tiene que "reemplazar la cadena original" y se encuentra con esta respuesta ..

Im utilizando un EditarTexto como un ejemplo


// DAR OBJETIVO TEXTO a NOMBRE

EditText textbox = (EditText) findViewById(R.id.your_textboxID); 

// STRING PARA CAMBIAR

String oldText = "hello" 
String newText = "Hi";  
String textBoxText = textbox.getText().toString(); 

// reemplazar cadenas CON RETURNED STRINGS

String returnedString = textBoxText.replace(oldText, newText); 

// USO DEVUELTO STRINGS para substituir la nueva cadena dentro TEXTBOX

textbox.setText(returnedString); 

Esto es no probado, pero es solo un ejemplo de usar la cadena devuelta para reemplazar la cadena de diseños original con setText()!

Obviamente este ejemplo requiere que tenga un EditarTexto con el ID de unidad para your_textboxID

Cuestiones relacionadas