EJERCICIO GUIADO.
JAVA:
CADENAS
CADENAS
1. Una cadena es básicamente un texto.
2. Las cadenas en Java son objetos como cualquier otro, y tienen métodos que pueden
ser usados para realizar distintas operaciones sobre el texto.
3. En esta hoja se practicará con varios de esos métodos.
PROYECTO EJEMPLO
1. Cree un proyecto en NetBeans que tenga un formulario con estos elementos:
El cuadro de texto superior se llama txtFrase.
Las etiquetas con bordes se llaman respectivamente txtMayusculas y txtMinusculas.
El botón se llama btnAnalizar.
2. Programe lo siguiente en el botón analizar:
String frase;
frase = txtFrase.getText();
etiMayusculas.setText(frase.toUpperCase());
etiMinusculas.setText(frase.toLowerCase());
3. Ejecute el programa y compruebe su funcionamiento. Observará como al pulsar el
botón Analizar la frase escrita en el cuadro de texto se presenta en mayúsculas y
minúsculas en ambas etiquetas.
4. Analicemos el código:
String frase;
Esta instrucción crea una variable de tipo texto (cadena). Por tanto, se puede
considerar que la variable frase es un objeto como cualquier otro y tiene por tanto una
serie de métodos que pueden ser aplicados a dicha variable.
frase = txtFrase.getText();
Aquí recogemos el contenido del cuadro de texto en la variable frase.
etiMayusculas.setText(frase.toUpperCase());
Esta instrucción sitúa un texto dentro de la etiqueta etiMayusculas:
etiMayusculas.setText(...);
Si observa el texto que se introduce en la etiqueta verá lo siguiente:
frase.toUpperCase()
Este trozo de código consiste en la aplicación del método toUpperCase() sobre el
objeto frase. Este método da la orden al objeto frase de que se ponga en
mayúsculas.
Así que básicamente estamos introduciendo en la etiqueta el texto de la frase en
mayúsculas.
etiMinusculas.setText(frase.toLowerCase());
En esta instrucción se hace algo parecido, solo que aplicamos el método
toLowerCase() a la frase. En este caso, este método pone la frase en minúsculas.
Los métodos toUpperCase y toLowerCase son métodos aplicables a los objetos de
cadena. A continuación se estudiarán otros métodos.
5. Añada al formulario otra etiqueta llamada etiCaracteres.
6. Acceda al código del botón Analizar y añada la siguiente línea de código al final:
etiCaracteres.setText("La frase tiene "+frase.length()+" caracteres");
7. Compruebe el funcionamiento del programa. Si introduce una frase y pulsa el botón
Analizar, en la nueva etiqueta aparecerá el número de caracteres que tiene la frase
introducida:
8. Si observa el código, verá como se usa un método llamado length(), el cual devuelve
un entero correspondiente con el número de caracteres del objeto de cadena. En el
ejemplo, del objeto frase:
frase.length()
9. Añada una etiqueta llamada etiSustitucion.
10. Añada al botón Analizar la siguiente línea de código:
etiSustitucion.setText(frase.replaceAll("a","o"));
11. Compruebe la ejecución del programa. Esta línea sustituye las “a” por “o” en la frase:
12. Si observa la línea de código verá que se está usando un método llamado replaceAll
el cual sustituye una cadena por otra dentro del objeto de cadena. En el ejemplo se
está reemplazando “a” por “o”.
frase.replaceAll("a","o")
13. Añada dos etiquetas más llamadas respectivamente etiSubcadena1, y
etiSubcadena2.
14. Luego añada las siguientes líneas de código al botón Analizar.
etiSubcadena1.setText(frase.substring(22));
etiSubcadena2.setText(frase.substring(7,12));
15. Ejecute el programa y escriba la frase “No por mucho madrugar amanece más
temprano”. Luego pulse el botón analizar. Observará que se extraen dos subcadenas
de la frase principal y se muestran en las nuevas etiquetas:
16. Observe las dos líneas de código que añadió:
etiSubcadena1.setText(frase.substring(22));
etiSubcadena2.setText(frase.substring(7,12));
17. La primera usa el método substring, el cual permite extraer una subcadena de la
cadena global.
Este método está siendo usado con un solo parámetro: el valor 22. Esto significa que
se extraerá desde el carácter 22 hasta el final. (Tenga en cuenta que los caracteres
empiezan a contarse desde 0)
Así pues en el ejemplo se mostrará “amanece más temprano”
18. La segunda línea usa el método substring pero con dos parámetros: el valor 7 y el
valor 12. Esto significa que se extraerá desde el carácter 7 al carácter anterior al 12.
Así pues en el ejemplo se extraerá la palabra “mucho”.
19. Estas líneas pueden producir excepciones, en el caso de que se quiera extraer una
subcadena desde una posición que no exista. Esto podría producir que el programa
se corte.
Así pues se recomienda el uso de try ... catch con este código:
try {
etiSubcadena1.setText(frase.substring(22));
etiSubcadena2.setText(frase.substring(7,12));
} catch(Exception e) {
JOptionPane.showMessageDialog(null,"Error de extracción de subcadena");
}
20. Añada una nueva etiqueta. Llámela etiPosicion.
21. Añada la siguiente línea de código al botón Analizar:
etiPosicion.setText("Posición de la a: "+frase.indexOf("a"));
22. Ejecute el programa y compruebe el funcionamiento de esta línea de código.
Observará como se muestra la posición de la primera “a” encontrada en la frase:
23. El método indexOf permite encontrar la posición donde se encuentra por primera vez
la cadena indicada. En el ejemplo, la cadena que se busca es la “a”:
frase.indexOf(“a”);
Como información adicional, se comenta que existe otra forma de usar indexOf,
añadiendo un nuevo parámetro, el cual indica desde que posición se buscará la
subcadena:
frase.indexOf(“subcadena”,pos);
Por ejemplo:
frase.indexOf(“hola”,10);
Esta instrucción devuelve la posición donde primero se encuentre la subcadena
“hola” en la frase a partir de la posición 10.
24. Añada dos nuevas etiquetas al formulario, que se llamen respectivamente etiEmpieza
y etiTermina.
25. Añada el siguiente código al botón Analizar:
if (frase.startsWith("a")) {
etiEmpieza.setText("La frase empieza por a");
} else {
etiEmpieza.setText("La frase no empieza por a");
}
if (frase.endsWith("a")) {
etiTermina.setText("La frase termina en a");
} else {
etiTermina.setText("La frase no termina en a");
}
26. Ejecute el programa y compruebe el funcionamiento de este código.
Este código indica si la frase introducida empieza o no por a.
Igualmente indica si termina o no por a.
27. El código añadido está formado por dos Si. Estudiemos el primero:
if (frase.startsWith("a")) {
etiEmpieza.setText("La frase empieza por a");
} else {
etiEmpieza.setText("La frase no empieza por a");
}
En este código se usa un método llamado startsWith que significa “empieza con”.
Este método tiene como parámetro una cadena y devuelve verdadero o falso según
si la cadena empieza por dicha cadena.
En el ejemplo, si la frase empieza por “a” entonces se muestra un mensaje
indicándolo. En caso contrario se indica que la frase no empieza por a.
28. El segundo SI es muy similar al primero, solo que usa el método endsWith, que
significa “termina por”.
29. Añada una nueva etiqueta. Llámela etiIguales.
30. Añada el siguiente código al botón Analizar:
if (frase.equals("Hola")) {
etiIguales.setText("Hola a ti tambien");
} else {
etiIguales.setText("Lalalala");
}
31. Este código muestra en la etiqueta la frase “Hola a ti también” en el caso de que la
frase escrita sea “Hola”. En caso contrario se muestra “Lalala”. Compruebe el
funcionamiento del programa:
Si escribes “Hola”...
...aparece la frase
“Hola a ti también”
Si se escribe algo
distinto de “Hola”...
...aparece la frase
“Lalalala”
32. Si observamos el código veremos el uso de un método muy importante: equals. Este
evento comprueba si el objeto de cadena es igual a otra cadena. En el ejemplo, si la
frase es igual a “Hola”.
if (frase.equals("Hola")) {
etiIguales.setText("Hola a ti tambien");
} else {
etiIguales.setText("Lalalala");
}
Este método devuelve verdadero o falso, así que se usa en las condiciones para
comprobar si una cadena es igual a otra.
33. Debe tener en cuenta que el método equals distingue entre mayúsculas y
minúsculas. Esto significa que no es lo mismo “Hola” que “hola”. En el caso de que
quiera que las mayúsculas y minúsculas no sean tenidas en cuenta, usará el método:
equalsIgnoreCase(“cadenaacomparar”)
Pruebe este método en el programa para que no se distinga entre “Hola” y “hola”.
34. Se pueden usar varios métodos de cadenas en una instrucción para realizar distintas
modificaciones sobre una cadena.
Veamos esta idea con un ejemplo:
frase
Es la frase tal cual fue escrita...
frase.toUpperCase()
Es la frase en mayúsculas, ya que se ha aplicado el método toUpperCase
frase.toUpperCase().replaceAll(“a”,”e”)
Es la frase en mayúsculas donde se ha sustituido las aes por ees. En este
caso se han aplicado dos métodos: toUpperCase y replaceAll.
frase.toUpperCase().replaceAll(“a”,”e”).substring(4)
Es la frase en mayúsculas, a la que se le ha sustituido aes por ees y de la que
se ha extraído desde la posición cuarta hasta el final.
frase.toUpperCase().replaceAll(“a”,”e”).substring(4).otrometododecadena
Y en este ejemplo general, después de poner la frase en mayúsculas, sustituir
las aes por ees y extraer desde la posición cuarta al final, se aplica a la
cadena resultante el método otrometododecadena. Etc...
35. Para probar lo anterior, añada una nueva etiqueta llamada etiMetodos.
36. Añada en el botón Analizar la siguiente línea de código:
etiMetodos.setText(frase.replaceAll("a","i").replaceAll("e","i").toUpperCase());
Esta instrucción aplica varios métodos a la frase. En concreto hace lo siguiente:
a. Reemplaza en la frase original las aes por ies.
b. A la frase resultante le reemplaza las ees por ies.
c. Y la frase resultante se pone en mayúsculas.
La frase resultante se muestra en la etiqueta etiMetodos.
37. Ejecute el programa y pruébelo con la cadena: “La piedra del mechero”. Observe el
resultado.
CONCLUSIONES
CADENAS
- Una cadena es un texto.
- Las variables de cadenas se declaran de la siguiente forma:
String variable;
- Las cadenas son objetos y tienen multitud de métodos que permiten el manejo
de texto (poner en mayúsculas, minúsculas, extraer subcadena, etc..)
- Se pueden aplicar varios métodos a la misma cadena de la siguiente forma:
cadena.Método1().Método2().Método3().etc...