Remplazar caracteres con Java

19/Oct/2007 Java , 32 Comentarios

Estaba revisando las notas sobre la clase String y los ejemplos publicados por Linea de Código al respecto. Es en ese momento cuando me he dado cuenta que, entre otros muchos, no tenía publicado un ejemplo que explicase como se hace la sustitución de caracteres en una cadena de texto.

La verdad es que la sustitución en si no es que se diga muy complicada. Basta con saber cómo usar el método replace(char oldChar, char newChar). Este método busca todos los caracteres que coincidan con el parámetro oldChar y los sustituye por el carácter que tenga en newChar. Más sencillo no puede ser.

Mi gran dilema surge cuando pienso en cual puede ser el ejemplo a usar para mostrar esto. Seguro que hay alguna frase graciosa para ilustrar el ejemplo. Y es que hay que aprender con cosas que nos llamen la atención. Esto facilita mucho las cosas.

En ese momento me viene a la mente “Cuando Fernando Séptimo Usaba Paletó”. Creo que me han afectado las vacaciones si a la hora que es tengo en mente esta canción, pero vamos allá.

Cuando Fernando Séptimo usaba paletó, 
Cuando Fernando Séptimo usaba paletó, 
Cuando Fernando Séptimo usaba paletó,
paletó, usaba paletó.

Y ahora con la ‘A’...

Caanda Farnanda Saptama asaba palata,
Caanda Farnanda Saptama asaba palata,
Caanda Farnanda Saptama asaba palata,
palata, asaba palata.

Y ahora con la ‘E’....

Vamos, ejemplo más claro sobre el reemplazo de vocales no podíamos haber encontrado o ¿no?

En este ejemplo podemos ver varias cosas... La primera es que para realizar saltos de línea tenemos que utilizar la secuencia de escape \r. La cadena de texto nos quedaría de la siguiente forma:

String sFernando = "Cuando Fernando Séptimo usaba paleto,\r";

La segunda es que el resultado del método replace(char oldChar, char newChar) nos devolverá una clase String y que podremos aplicar sobre ella reiteradamente en una misma línea el mismo método tantas veces queramos.

Y es que de la estrofa inicial hay que pasar todas las vocales a la vocal ‘a’. A si que tendremos el siguiente código:

  1. sFernando = sFernando.replace('e','a').replace('i','a')
  2. .replace('o','a').replace('u','a');

Espero que el artículo os haya parecido, al menos, curioso...Por cierto, de pequeño siempre me preguntaba ¿qué diablos (realmente decía XxXx) será el paletó? Porque había desviaciones de la canción que decían algo así como “Cuando Fernando Séptimo usaba pantalón”.

Digo yo que paletó y pantalón.... algo tendrán que ver.... Pues bueno, esto dice la RAE.

paletó. (Del fr. paletot). 1. m. Gabán de paño grueso, largo y entallado, pero sin faldas como el levitón.

Vaya, tendré que tirar de la RAE otra vez....

gabán. (Quizá del ár. clás. qaba'). 1. m. abrigo (? prenda de vestir).

Visualizar el ejemplo | Descargar el código

Vídeos sobre Java


32 comentarios en “Remplazar caracteres con Java”

Víctor Cuervo

Javier

Perdona, me pudo el ansia y el no investigar un poco. Solucionado con un StringBuilder:
StringBuilder nameOfPswrd = new StringBuilder(emptyPswrd.getName());
nameOfPswrd.setCharAt( i , (char)(nameOfPswrd.charAt(i)+1) );

Contraseña emptyPswrd;
emptyPswrd = buildSizePsswrd(pswrdLength);
StringBuilder nameOfPswrd = new StringBuilder(emptyPswrd.getName());
//nameOfPsswrd.setCharAt(4, ‘x’);
log (“TRY: ” + emptyPswrd.getName());
for (int i = pswrdLength – 1; i >= 0; i–){
while(nameOfPswrd.charAt(i) != pswrdName.charAt(i)){
if(nameOfPswrd.charAt(i) != pswrdName.charAt(i)){
nameOfPswrd.setCharAt( i , (char)(nameOfPswrd.charAt(i)+1) );
//emptyPswrd = new Contraseña(nameOfPswrd);
//log(“PRUEBA: ” + emptyPswrd.getName());
log(nameOfPswrd);
}
}

}

Gracias igualmente y perdona si no se tabula el código! :/

Víctor Cuervo

Víctor Cuervo

Al revés Javier, gracias a ti por compartir la solución. Seguro que a alguien le puede ayudar.
Muchas gracias.

Víctor Cuervo

Javier

Buenas, me gustaría hacer una pregunta relacionada con este tema, pero no me sirve exactamente con los explicado.
Por ejemplo, me gustaría poder cambiar un caracter de un String por su caracter inmediatamente superior. Por ejemplo:
Tengo el String “aaaa” y quiero compararlo con el string “aaah” y que salgan todas las pruebas mediante un logger.
Querría ir reemplazando al [charAt(3)] por [(char)(charAt(3)+1)], pero sólo ese y no todas las a’s. Y con esto se me reemplazan todas las a, ya que [charAt(3) == a]
Sí NO
aaaa aaaa
aaab bbbb
aaac cccc
… …
aaah hhhh

Gracias!

Víctor Cuervo

Gisela

Hola gracias por tu aporte, me gustaría saber como lo puedo hacer con un texto ingresado, donde no sabemos si contiene dichas letras. Mil gracias!!!

Víctor Cuervo

Víctor Cuervo

Hola Gisela,

Bastaría que pidieses la cadena por consola y luego ejecutases este código. Sería algo parecido a:

 Scanner reader = new Scanner(System.in);
String sTexto = "";

System.out.println("Escribe palabras hasta que te canses. Entonces escribe FIN");

do {
  sTexto = reader.next();
  sTexto.replace('e','a').replace('i','a').replace('o','a').replace('u','a');
  System.out.println(sTexto);
} while(!sTexto.equals("FIN")); 

Espero que te sirva. Saludos.

Víctor Cuervo

tetejose

Muchas gracias me ha servido muchisisiisisisisimo!!

Víctor Cuervo

Erick

si quiero cambiar la primera aparicion del caracter ?. Da error al ejecutar porque cree que estoy intentando usar un patron. He intentado caparla pero me da error de compilacion.

Víctor Cuervo

kamikaze_pum

Muchas gracias, me ha venido muy bien 🙂

Víctor Cuervo

jonathan

Como puedo tomar las “(comillas dobles)

Víctor Cuervo

Rodrigo

Si lo que buscas es el cambio de una palabra completa, debes usar el replaceAll.
Por ejemplo:
Si tienes text = “000455000”.
text = text.replaceAll(“455″,”111”);

al imprimir text, debe dar como resultado-> “000111000”.

Saludos

Víctor Cuervo

lineadecodigo

@alejandro,

¿Qué quieres decir con tomar en cuenta? ¿Reemplazarlos?

Víctor Cuervo

lineadecodigo

@leidy,

Tienes el ejemplo de ordenación en http://lineadecodigo.com/java/ordenar-un-vector-de-string-en-java/

Espero que te sea de ayuda.

Víctor Cuervo

alejandro

hello amigos!
alguien que me pueda ayudar please!!
como puedo tomar en cuenta los signos “+ y -” en java??

Víctor Cuervo

leidy

hola todos
pueden ayudarme con un ejemplo de como ordeno una cadena de caracteres de mayor a menor ( 9,3,6,2,4,3,5)

Víctor Cuervo

tomas

es ta mal lo q dices regresa a inicial

Víctor Cuervo

Stan

Como haria para reemplazar caracteres de un texto que posee palabras minusculas y mayusculas, como por ejemplo cambiar las ‘a’ por las ‘e’ de este string “Esta es la cadena PRUEBA” apliando el cambio a todos los caracteres sin importar. Gracias espero sus respuestas.

Víctor Cuervo

mario gomez

deseo saber ingresar caracteres en un programa java como por ejemplo el nombre.

Víctor Cuervo

jose

que onda banda…

tengo una duda, quiero reemplazar un caracter en especial pero considerando espacios, como podria hacerlo??, hasta ahora mis intentos han sido fallidos…espero puedan ayudarme

ej.

el oso y el perro—-> el oso o el perro
jose o hector—->jose y hector

Víctor Cuervo

lineadecodigo

@JosueDani,

Me alegro que te haya servido. 🙂 🙂 🙂

Víctor Cuervo

JosueDani

oye muchas gracias habia olvidado esta funcion tal util

Víctor Cuervo

lineadecodigo

@edwards,

¿Qué frase es y qué símbolo quieres quitar?

Víctor Cuervo

edwards

help necesito quitar un signo de una frase para poder definir si es palindromo, lo he intentado pero no me funciona..gracias

Víctor Cuervo

david

Si quiero cambiar un determinado caracter ejemplo
11450
por
12450

si lo aplico como dicen sera
22450

Víctor Cuervo

barzx

jeje, tambien puedes reemplazar cadenas completas de String a String con replace
String cadenadejemplo=”0123456789″
cadenadejemplo=cadenadejemplo.replace(“1234″,”4321”);
System.out.println(cadenadejemplo);

te debe quedar algo asi:
0432156789

ya lo probe y si funciona jeje

Víctor Cuervo

barzx

x cierto para los saltos de linea necesitas remplazar de esta forma
String cadenadejemplo=”este\n es\n un ejemplo”;
System.out.println(cadenadejemplo);
cadenadejemplo=cadenadejemplo.replace(String.valueOf(‘\n’),””);
System.out.println(cadenadejemplo);
donde ‘\n’ representa el salto de linea como char, pero para poder eliminarlo es necesario convertirlo a String por medio de la funcion String.valueOf()
y despues reemplazarlo por el string que tu quieras, personalmente se me hace mas practico reemplazar asi, ya que no tienes problemas con los tipos de archivos

Víctor Cuervo

barzx

jeje, al fin algo que trae una sintaxis correcta, lo estaba buscando, gracias man

Víctor Cuervo

sil

y como se haria para camibar una vocal en todo un archivo? cual seria la sintaxis del replace()?

Víctor Cuervo

lurdes

esto esta bien, pero que ocurre cuando lo que quieres sustituir son los saltos de linea?? con que carecter haces el replace????

Víctor Cuervo

Alexq

Buenas, yo quisiera saber como reemplazar enuna lista de String, tengo una L1, y en L2 lo que quiero reeemplazar y en L3 como quedaria… gracias, pero sin usar metodos del String().

Víctor Cuervo

javin

osea yo quiero por ejemplo

a.elementAt(1)=a.elementAt(0);

seria lo mismo a.elementAt(1).replace(” fksdjf”,”jkljdsk”)

pero no se modifica y no se lo puedo asignar por lo que ya tu mensionaste es un objeto y no se modifica ya que con el = hago referncia al lugar en memoria donde se guarda la cadena se lo debo asignar a un float o halgo asi..entonce scomo modifico..gracias

Víctor Cuervo

javin

eso no sirve amigo o no se si para cadenas dentro de un Vector no funcione yo hago..

Vector a= new Vector ();
a.add(“mario”);
a.add(“carlos”);
String b = ” dario”;

a.elementAt(1)= a.elementAt(1).replace(‘c’,’d’).replace(‘r’,’t’).replace(‘l’,’w’);
aunque no hay necesidad de hacer 3 remplazos para que funcione con una debe de hacerse el punto es que al elemento 1 del vector que seria carlos no lo puedo modificar..como hago esto es para ordenar un vector utlizando laburbuja bidireccional y debo asignar valores a las cadenas pero estoy pegado en eso hace rato..como hago?

Víctor Cuervo

profiterol

estaria bien que explicases como reemplazar un string por otro dentro de otro string.

Porque esto solo nos vale para reemplazar caracteres.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*