Manipulación de cadenas (‘strings‘) en Java y código de ejemplo
Un objeto de la clase String se crea a partir de literales (cadena de caracteres); Java crea un objeto String cuando encuentra una cadena entre comillas. Los String permiten operar con palabras y frases. No es tipo nativo de Java, existe la clase java.lang.String.
En Java sólo los tipos primitivos del lenguaje (byte, short, int, long, float, double, char, boolean) se comparan con ==, los Strings se comparan con el método equals que compara los caracteres que componen ambos String.
boolean B = cadena2.equals(cadena1);
Se puede crear un objeto String de 2 maneras:
String cadena = "Cadena";
String cadena = new String("Cadena");
El primer método es preferible; como se ha dicho, Java crea un objeto String siempre que encuentra texto entre comillas por lo que en el segundo ejemplo se llama al constructor 2 veces. Los String se pueden concatenar con el operador suma (+):
String cadena = "Cadena" + "Otra cadena";
Métodos de la clase String
A continuación se comentan los métodos más importantes de la clase String:
- concatenar texto con texto: operador +
- concatenar texto con números enteros: operador +
- caracteres de escape para saltos de línea y tabulaciones: \n \t
- length() devuelve la longitud de la cadena en caracteres
- charAt(int) devuelve el carácter que ocupa el índice especificado
- replace(char, char) reemplaza todas las ocurrencias del primer carácter por el segundo
- toUpperCase() devuelve la cadena en mayúsculas
- toLowerCase() devuelve la cadena en mayúsculas:
- substring(int, int) devuelve una cadena que comienza en el índice del primer parámetro y termina en el índice del segundo parámetro
- compareTo(String) compara dos String desde el punto de vista lexicográfico (en el que la cadena más corta precede a la más larga):
– devuelve entero negativo si el String precede al argumento
– devuelve entero positivo si el String va detrás del argumento
– devuelve cero si ambos String son iguales (compareTo() devuelve cero cuando equals(String) devuelve true) - append() añade texto a una cadena existente
- indexOf() devuelve el índice en que aparece por primera vez el carácter especificado (devuelve -1 si el carácter no se encuentra)
- lastIndexOf() devuelve el índice en que aparece por última vez el carácter especificado (devuelve -1 si el carácter no se encuentra)
- insert(int, char) inserta un carácter en la posición especificada
- reverse() devuelve el texto invertido.
Código de ejemplo
/* CLASE QUE MUESTRA EN CONSOLA LOS RESULTADOS
* DE ALGUNOS METODOS QUE MANIPULAN CADENAS */
public class Cadenas
{
public static void main(String[] args)
{
//instanciar
String texto1 = "PolloDavid"; // Declaracion simple
String texto2 = new String("PolloMiliuco"); // Usando un constructor
System.out.println( "\nLa primera cadena de texto es :\n" );
System.out.println( "\t"+texto1 );
System.out.println( "\nLa segunda cadena de texto es :\n" );
System.out.println( "\t"+texto2 );
//concatenar
System.out.println( "\nConcatenamos con texto2 delante: " + texto2 + texto1 );
System.out.println( "Concatenamos con texto1 delante: " + texto1 + texto2 );
System.out.println( "Concatenamos cadenas con enteros: " + texto1 + " " + 5 + " " + 23.5 );
// longitud
System.out.println( "\nLa longitud de texto2 es: " + texto2.length() );
//caracter de un indice
System.out.println( "La segunda letra de texto2 es: " + texto2.charAt(1) );
//buscar segmentos
System.out.println( "Tres letras de texto2 desde la posicion 2: " + texto2.substring(2,5) );
//primer indice de un caracter
System.out.println( "\nLa letra l aparece por primera vez en texto2 en el indice: " + texto2.indexOf("l") );
//ultimo indice de un caracter
System.out.println( "La letra l aparece por ultima vez en texto2 en el indice: " + texto2.lastIndexOf("l") );
//reemplazar
texto2 = texto2.replace("c", "q");
System.out.println( "\nCambiamos c por q en texto2: " + texto2);
// mayúsculas y minúsculas
System.out.println( "\nLa cadena texto2 en mayusculas: " + texto2.toUpperCase() );
System.out.println( "La cadena texto2 en minusculas: " + texto2.toLowerCase() );
//comparación
System.out.println( "\nComparamos texto1 y texto2: " + texto1.compareTo(texto2) );
if (texto1.compareTo(texto2) < 0)
System.out.println( "\tTexto1 es mas corto que texto2" );
//nueva cadena con StringBuffer
StringBuffer texto3 = new StringBuffer("Otra cadena");
//agregar caracteres al final
texto3.append(" nueva");
System.out.println( "\nTexto 3 es: " + texto3 );
//insertar caracteres en una posición
texto3.insert(6, "1");
System.out.println( "Intercalando un 1 en la posicion 6: " + texto3 );
//revertir el orden de la cadena
texto3.reverse();
System.out.println( "Y ahora texto3 invertido: " + texto3 +"\n");
}
}
