CONTACTO

Encuentra informaci贸n referente a la programaci贸n, dise帽o gr谩fico, electr贸nica y mucho m谩s, la p谩gina est谩 pensada para compartir contenido educativo relevante coadyuvando a su aprendizaje diario.


Clase String en Java – Cadenas de texto

La clase String en Java nos da la posibilidad de manejar cadenas de texto (secuencia de caracteres), si queremos manejar cadenas de texto debemos crear un objeto de la clase String y gracias a esto podremos manejar la cadena de texto como una matriz, esto nos dar谩 la posibilidad de recorrer la cadenas o modificar en la posici贸n de que uno quiera.

Cuando trabajamos con String estamos creando un objeto de tipo String, por lo cual no se incluye en los tipos de datos primitivos de Java.

String cadena = 鈥 隆Hola Mundo! 鈥; 

Cuando empezamos a trabajar con cadenas de texto muchas veces nos surge la necesidad de unir dos o m谩s cadenas de texto, para lograr esto lo que hacemos es concatenar estas cadenas con el operador de concatenaci贸n 鈥+鈥.

String Cadena ="Cadena de texto " +
"unida a la segunda cadena de texto y "+
"la tercera cadena de texto.";

Al poder trabajar con un objeto String nos da la posibilidad usarlo de distintas formas, usando un array de caracteres o asignado valores num茅ricos a un array para tratarlos como c贸digos Unicode en alg煤n formato de codificaci贸n de caracteres que escojamos.

char[] palabra = {'P','a','l','a','b','r','a'};//Array de char
String cadena = new String(palabra);
byte[] datos = {65,66,67,68}; //Array de byte
String codificada = new String (datos, 鈥淚SO-8859-1鈥);

Comparaci贸n entre objetos de la clase String de Java

Los objetos String no se deben comparar directamente con los operadores de comparaci贸n en su lugar usaremos expresiones que se detallan a continuaci贸n.

  • cadena1.equal(cadena2). El resultado de esta comparaci贸n ser谩 true si la cadena1 es exactamente igual a la cadena2 y ambas cadenas son del tipo String.
  • cadena1.equalsIgnoreCase(cadena2). Funciona como la anterior pero no toma en cuenta las may煤sculas y min煤sculas, es decir si la cadena de texto tiene may煤sculas y  en la otra no, nos devolver谩 true.
  • cadena1.compareTo(cadena2). Compara ambas cadenas, considerando el orden alfab茅tico, es decir  las compara lexicogr谩ficamente. La comparaci贸n se basa en el valor Unicode de cada car谩cter en las cadenas. Si la primera cadena es mayor en orden alfab茅tico que la segunda devuelve un valor num茅rico positivo, si son iguales devuelve 0 y si es la segunda la mayor devuelve un valor n煤mero negativo. Para esta comparaci贸n Java toma la tabla ASCII por lo cual la letra 鈥溍扁 en mayor que la vocal 鈥渙鈥.
  • cadena1.compareToIgnoreCase(cadena2). Compara dos cadenas lexicogr谩ficamente, ignorando las diferencias entre may煤sculas y min煤sculas, el resto de su funcionamiento es igual al anterior caso.

M茅todo String.valueOf

Es un m茅todo est谩tico que nos permite convertir valores que no son de cadena a forma de una cadena.

int x = 12345;
String numero = String.valueOf(x);
String fecha = String.valueOf(new Date());

M茅todos de las variables de las cadenas de texto

El uso de estos m茅todos es bastante sencillo, solo necesitamos escribir el nombre del m茅todo y sus par谩metros.

length

Devuelve la longitud de una cadena en un valor num茅rico, es decir nos devolver谩 el n煤mero de caracteres de la cadena.

String texto="Hola mundo";
System.out.println(texto.length());//Devuelve 10

concat

Para concatenar cadenas en Java podemos realizar de dos formas: utilizando el m茅todo concat o con el operador 鈥+鈥.

String cadena1="Hola ", cadena2="mundo", textofinal;
textofinal = cadena1.concat(cadena2); // Devuelve Hola mundo

charAt

Devuelve un car谩cter de una cadena, para obtener dicho car谩cter debemos declarar la posici贸n del car谩cter, la posici贸n del primer car谩cter es cero y va aumentando en uno despu茅s de cada car谩cter.

Al estar trabajando con un m茅todo que recibe un valor que puede ser en alg煤n memento m谩s de lo permitido puede lanzarnos una excepci贸n de tipo IndexOutOfBoundsException.

String cadena = "Hola mundo";
Char c1 = cadena.charAt(5); // c1 ser谩 igual a 鈥榤鈥

substring

Utilizada para obtener una porci贸n de texto de una cadena, para realizar esto debemos indicar una posici贸n inicial y una posici贸n final, si las posiciones indicadas no son v谩lidas ocurre una excepci贸n del tipo IndexOutOfBoundsException.

String cadena = "Hola mundo";
String cadena1 = cadena.substring(0,4); // cadena1 ser谩 igual a "Hola"

indexOf

Devuelve un valor num茅rico de la primera posici贸n en la que aparece un determinado texto en un cadena, y en caso de no encontrar nada devolver谩 -1.

String cadena1 = "Se ha vuelto terriblemente obvio que nuestra tecnolog铆a ha superado nuestra humanidad";
System.out.println(cadena1.indexOf("ha")); // Imprime 3

Tambi茅n nos da la posibilidad de indicar la posici贸n desde donde quiere empezar a buscar.

System.out.println(cadena1.indexOf("ha",10)); //imprime 56

lastIndexOf

Devuelve la 煤ltima posici贸n en la aparece un de determinado texto en una cadena, es decir que empieza a buscar el texto desde el final.

String cadena1 = "Se ha vuelto terriblemente obvio que nuestra tecnolog铆a ha superado nuestra humanidad";
System.out.println(cadena1.lastIndexOf("ha")); //imprime 56

endsWith

Devuelve verdadero (true) si la cadena termina con un determinado texto.

String cadena1 = 鈥淪e ha vuelto terriblemente obvio que nuestra tecnolog铆a ha superado nuestra humanidad鈥;
System.out.println(cadena1.lastIndexOf("humanidad")); //Devuelve true

startsWith

Devuelve verdadero (true) si la cadena empieza con un determinado texto.

replace

Reemplaza todos los caracteres por otro que le indiquemos, pero esto lo hace de manera superficial es decir que el texto original nunca cambia y necesitamos almacenar la nueva cadena en otro String en caso de que lo requieras.

String cadena="cara";
System.out.println(cadena.replace('c' , 'r'));//Da rara
System.out.println(cadena);//Sigue siendo igual a cara

replaceAll

Logra reemplazar textos completos por otros en una cadena, tiene dos par谩metros, el texto que se busca y el texto con el que se reemplazara y al igual que la anterior la cadena original nunca cambia.

String cadena1="Jugar en el jard铆n";
System.out.println(cadena1.replace("ar" , "er"));//Da Juger en el jerd铆n
System.out.println(cadena1);//Sigue valiendo Jugar en el jard铆n 

toUpperCase

Devuelve en may煤scula toda la cadena.

toLowerCase

Devuelve en min煤sculas toda la cadena.

toCharArray

Obtiene un array de caracteres a partir de una cadena.

Estos son algunos de m茅todos m谩s usados en un programa escrito en Java pero existen m谩s m茅todos que posee la clase String, para m谩s informaci贸n clara y precisa se recomienda acceder directamente a la documentaci贸n de Java en la pagina web de Oracle.

Ejemplo del uso de la clase String de Java

import java.util.Scanner;

/**
 *
 * @author Creatividad Codificada
 */
public class ClaseString {
    //Colores para la consola
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_RED_BACKGROUND = "\u001B[41m";
    public static final String ANSI_GREEN_BACKGROUND = "\u001B[42m";
    public static final String ANSI_YELLOW_BACKGROUND = "\u001B[43m";
    public static final String ANSI_BLUE_BACKGROUND = "\u001B[44m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_WHITE = "\u001B[37m";
    public static void main(String[] args) {
        //Variables 
        byte opcion;
        String menu;
        String frase = "Se ha vuelto terriblemente obvio que nuestra tecnolog铆a ha superado nuestra humanidad";
        Scanner en = new Scanner(System.in);
        do{
            System.out.println(ANSI_BLUE_BACKGROUND + ANSI_YELLOW + frase + ANSI_RESET);
            menu="";
            menu+="****** Men煤 ******\n";
            menu+="1.- Cambiar a may煤scula la frase \n";
            menu+="2.- Cambiar a min煤sculas la frase \n";
            menu+="3.- Reemplazar un car谩cter por otro \n";
            menu+="4.- Reemplazar un texto por otro \n";
            menu+="0.- Salir \n";
            menu+="Elija una opci贸n: ";
            System.out.print(menu);
            opcion=en.nextByte();
            switch(opcion){
            case 1:
                System.out.println(ANSI_GREEN_BACKGROUND+ frase.toUpperCase()+" \n");
                break;
            case 2:
                System.out.println( ANSI_GREEN_BACKGROUND+ frase.toLowerCase()+" \n");
                break;
            case 3:
                System.out.println(ANSI_YELLOW_BACKGROUND + "Ingrese el caracter que desea cambiar de la frase");
                String caracter_antiguo = en.next();
                while(caracter_antiguo.length()>1)
                {
                    System.out.println(ANSI_RED_BACKGROUND + ANSI_WHITE + "Error , Solo digita un carater" + ANSI_RESET);
                    String aux = en.next();
                    caracter_antiguo=aux;
                }
                System.out.println(ANSI_YELLOW_BACKGROUND + "Ingrese el caracter nuevo que desea colocar en la frase");
                String caracter_nuevo = en.next();
                while(caracter_nuevo.length()>1)
                {
                    System.out.println(ANSI_RED_BACKGROUND + ANSI_WHITE + "Error , Solo digita un carater"+ ANSI_RESET);
                    String aux1 = en.next();
                    caracter_nuevo=aux1;
                }
                System.out.println(ANSI_GREEN_BACKGROUND+ frase.replace(caracter_antiguo, caracter_nuevo)+" \n");
                break;   
            case 4:
                System.out.println(ANSI_YELLOW_BACKGROUND +"Ingrese el texto que desea cambiar de la frase");
                String texto_antiguo = en.next();
                System.out.println(ANSI_YELLOW_BACKGROUND + "Ingrese el texto nuevo que desea colocar de la frase");
                String texto_nuevo = en.next();
                System.out.println(ANSI_GREEN_BACKGROUND + frase.replaceAll(texto_antiguo, texto_nuevo)+" \n");
                break;   
            default:
                System.out.println(ANSI_RED_BACKGROUND +ANSI_WHITE + "No existe esta opci贸n, intenta otra vez \n");
            }
        }while(opcion!=0);
    }
    
}

Resultado

Se ha vuelto terriblemente obvio que nuestra tecnolog铆a ha superado nuestra humanidad
****** Men煤 ******
1.- Cambiar a may煤scula la frase 
2.- Cambiar a min煤sculas la frase 
3.- Reemplazar un car谩cter por otro 
4.- Reemplazar un texto por otro 
0.- Salir 
Elija una opci贸n: 

Este es un ejemplo bastante sencillo pero creo lo suficiente para entender el funcionamiento que tiene la clase String.

Comentarios

Su direcci贸n de email no sera publicado. Los campos obligatorios est谩n marcados con *.