Programación

10 métodos de Strings en Java que debes conocer

Domina Java con los 10 métodos de String más utilizados. Aprende a manipular texto de forma eficiente. ¡Mejora tus habilidades de programación ahora!

  11 min

Las strings son una parte esencial de prácticamente cualquier código. Por eso es importante que un lenguaje de programación ofrezca soporte robusto para su manipulación. Dada la importancia de esta tarea, este artículo se propone mostrar de forma clara los diez métodos principales para manipular Strings en Java. ¡Vamos a ello!

1. indexOf()

Se usa para encontrar caracteres y substrings dentro de una string. Devuelve el índice de la primera ocurrencia de la substring pasada como parámetro dentro de esta string; además, si proporcionamos el fromIndex, empieza a buscar desde el índice indicado.

Sintaxis de indexOf()

public int indexOf(int str, int fromIndex)

Parámetro(s)

  • str: Substring a buscar
  • fromIndex: La búsqueda comienza desde este índice

Valor de retorno

  • Índice de la primera ocurrencia de la substring especificada;
  • 0 si se pasa una string vacía, o;
  • -1 si no existe tal ocurrencia.

Variantes sobrecargadas

public int indexOf(int ch)

public int indexOf(int ch, int fromIndex)

public int indexOf(String str)

public int indexOf(String str,int fromIndex)

Uso práctico de indexOf()

¿Alguna vez te preguntaste cómo funciona la búsqueda en tu editor de código favorito?

El método indexOf() puede utilizarse para implementar esa funcionalidad. ¿Cómo?

El enfoque consiste en recorrer todas las líneas y usar indexOf() con la string objetivo. Si hay múltiples ocurrencias de la string objetivo en la misma línea, el proceso continúa desde el punto donde terminó la última substring encontrada.

public static int buscarOcurrencias(String[] parrafo, String objetivo) {
    int totalOcurrencias = 0;
    int indice = 0;

    for (int numeroLinea = 0; numeroLinea < parrafo.length; ++numeroLinea) {
        String linea = parrafo[numeroLinea];
        indice = linea.indexOf(objetivo, indice);

        while (indice != -1) {
            System.out.println("Encontrado en la línea " + numeroLinea + " en la posición " + indice);
            indice += objetivo.length();
            totalOcurrencias++;
            indice = linea.indexOf(objetivo, indice);
        }
    }

    return totalOcurrencias;
}

En este ejemplo, la función buscarOcurrencias recorre un array de strings que representa un párrafo. Busca ocurrencias de la string objetivo y, si las encuentra, imprime la línea y la posición donde fue localizada. El índice se actualiza para continuar la búsqueda desde el siguiente carácter después de la ocurrencia encontrada. La función devuelve el número total de ocurrencias encontradas.

2. toCharArray()

El método toCharArray() se utiliza para crear un nuevo array de caracteres a partir de una string. El contenido de este nuevo array se inicializa con los caracteres presentes en la string original, y su longitud es igual a la longitud de la string.

Sintaxis de toCharArray()

public char[] toCharArray()

Parámetro(s)

Ninguno

Valor de retorno

Se asigna en memoria un array de caracteres que contiene los caracteres de la string original, y se devuelve una referencia a ese array.

Uso práctico de toCharArray()

Durante operaciones intensivas de manipulación de strings, con frecuencia se crean nuevos objetos de string, lo cual puede ser ineficiente en cuanto al uso de memoria. Una estrategia efectiva es convertir la string en un array de caracteres primero, realizar las operaciones necesarias y, luego, convertir el array de caracteres de vuelta a una string.

Veamos un ejemplo donde verificamos si una string determinada es un palíndromo:

String palindromo = "Dot saw I was Tod";
char[] arrayDeCaracteres = palindromo.toCharArray();
int len = arrayDeCaracteres.length;
boolean esPalindromo = true;

for (int i = 0, j = len - 1; i < j; i++, j--) {
    if (arrayDeCaracteres[i] != arrayDeCaracteres[j]) {
        esPalindromo = false;
        break;
    }
}

if (esPalindromo) {
    System.out.println("Es un palíndromo");
} else {
    System.out.println("No es un palíndromo");
}

3. charAt()

El método charAt() permite extraer el carácter presente en el índice especificado de la string. Este método es útil cuando se desea verificar el valor de un carácter en un índice específico sin necesidad de recorrer toda la string.

Sintaxis de charAt()

public char charAt(int index)

Parámetro(s)

  • Index: índice del carácter en la string a recuperar

Valor de retorno

valor char de la String en el índice pasado como argumento

  • Lanza

IndexOutOfBoundsException - si el argumento proporcionado es negativo o mayor que la longitud de la String.

Uso práctico de charAt()

El método charAt() puede utilizarse, por ejemplo, para recorrer una string y contar la frecuencia de un carácter en particular.

String frase = "Estoy mejorando mis habilidades aprendiendo haciendo";
char caracterObjetivo = 'a';
int conteoCaracter = 0;

for (int i = 0; i < frase.length(); i++) {
    if (frase.charAt(i) == caracterObjetivo) {
        conteoCaracter++;
    }
}

System.out.println("La frecuencia del carácter '" + caracterObjetivo + "' es: " + conteoCaracter);

En este ejemplo, el método charAt() se utiliza para recorrer la string y contar cuántas veces aparece el carácter ‘a’ en ella. El resultado se imprime para indicar la frecuencia de ese carácter en la string.

4. concat()

La string pasada se anexa al final de la string especificada.

Sintaxis de concat()

public String concat(String str)

Parámetro(s)

str: string a anexar al final de una string dada

Valor de retorno

Un nuevo objeto String con la concatenación de la string pasada al final de la string dada.

Uso práctico de concat()

Aquí tienes un ejemplo usando el método concat() para construir un mensaje de bienvenida personalizado.

import java.util.Scanner;

public class MensajeBienvenida {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Ingresa tu nombre: ");
        String nombre = scanner.nextLine();

        String saludo = "Hola, ";
        String mensaje = "¡Bienvenido a nuestro sistema!";

        // Usando el método concat() para unir las strings
        String mensajePersonalizado = saludo.concat(nombre).concat(". ").concat(mensaje);

        System.out.println(mensajePersonalizado);

        scanner.close();
    }
}

5. replace()

Se usa para reemplazar caracteres y substrings en una string.

Sintaxis de replace()

public String replace(char oldChar, char newChar)

Parámetro(s)

  • oldChar: Carácter que debe ser reemplazado
  • newChar: Carácter que reemplazará a oldChar

Valor de retorno

Un nuevo objeto String que contiene una string creada reemplazando todas las ocurrencias de oldChar por newChar.

Uso práctico de replace()

Aquí tienes un ejemplo usando el método replace() para censurar un texto eliminando palabras sensibles.

import java.util.Scanner;

public class CensurarTexto {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Ingresa un texto: ");
        String textoOriginal = scanner.nextLine();

        String[] palabrasProhibidas = {"violento", "ofensivo", "inadecuado"};
        String textoCensurado = textoOriginal;

        // Usando el método replace() para sustituir palabras prohibidas
        for (String palabra : palabrasProhibidas) {
            textoCensurado = textoCensurado.replace(palabra, "[CENSURADO]");
        }

        System.out.println("Texto censurado: " + textoCensurado);

        scanner.close();
    }
}

6. substring()

Se usa para extraer una parte de una string a partir de una string proporcionada. Crea un nuevo objeto de string sin alterar la string original.

Sintaxis de substring()

public String substring(int beginIndex, int endIndex)

Parámetro(s)

  • beginIndex: La búsqueda comienza desde este índice
  • endIndex: La búsqueda termina en endIndex-1

Valor de retorno

Un nuevo objeto de string resultante de la parte de la string original recortada según los índices begin y endIndex.

  • Excepción:

IndexOutOfBoundsException - si beginIndex es negativo o mayor que la longitud de este objeto String.

Variante sobrecargada

  1. public String substring(int beginIndex)

Uso práctico de substring()

Es posible identificar todas las subcadenas dentro de una string específica utilizando el método substring(). Aunque este no es el enfoque más optimizado, te dará una comprensión de cómo funciona el método substring.

Aquí tienes una implementación del método SubString:

public void subString(String str, int n) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j <= n; j++) {
            System.out.println(str.substring(i, j));
        }
    }
}

Esta implementación recorre la string original, generando todas las posibles subcadenas a partir de índices consecutivos. Aunque funciona, es importante notar que puede no ser eficiente para strings muy largas debido al aumento en el número de iteraciones.

7. split()

El método split() se emplea para segmentar la string especificada según una expresión regular. Se puede declarar un límite para controlar el número de strings resultantes tras la división.

Sintaxis de split()

public String[] split(String regex, int limit)

Parámetro(s)

  • regex: Subcadena a localizar.
  • limit: La búsqueda comienza desde este índice.

Valor de retorno

Una matriz que contiene cada subcadena de esta string, terminada por otra subcadena que coincide con la expresión dada o por el final de la string. Las subcadenas en la matriz se organizan en el orden en que aparecen en la string original.

  • Excepción

PatternSyntaxException - si la sintaxis de la expresión regular es inválida.

Variante sobrecargada

  1. public String[] split(String regex)

Uso práctico de split()

Podemos contar el número de palabras presentes en un párrafo dividiendo la string usando el espacio como delimitador.

Ejemplo:

String str = "Esta string contiene cinco palabras";
String[] arrayDePalabras = str.split(" ");
System.out.println(arrayDePalabras.length);

Este fragmento de código divide la string en palabras individuales, representadas como elementos de un array. El resultado es el número de palabras en la string original.

8. compareTo()

Como programadores Java, con frecuencia necesitamos ordenar elementos en una lista o en una clase. El método compareTo() se utiliza para comparar dos strings en orden alfabético.

Sintaxis de compareTo()

public int compareTo(String anotherString)

Parámetro(s)

  • anotherString: La string a comparar.

Valor de retorno

  • Devuelve 0 si la string del argumento es igual a la string proporcionada.
  • Devuelve un valor < 0 si la string proporcionada es lexicográficamente menor que la string del argumento.
  • Devuelve un valor > 0 si la string proporcionada es lexicográficamente mayor que la string del argumento.

Uso práctico de compareTo()

Los algoritmos de ordenación basados en comparación se utilizan ampliamente en diversos contextos.

En las instituciones educativas, es común organizar a los estudiantes según el orden ascendente de sus nombres. Si los nombres de dos estudiantes son idénticos, el orden se determina por el orden ascendente de sus apellidos.

class Estudiante implements Comparable<Estudiante> {
    String nombre;
    String apellido;

    // Constructor y métodos aquí

    public int compareTo(Estudiante estudiante) {
        int comparacion = nombre.compareTo(estudiante.nombre);
        if (comparacion == 0) {
            return apellido.compareTo(estudiante.apellido);
        }
        return comparacion;
    }
}

public class OrdenarEstudiantes {
    List<Estudiante> estudiantes = new ArrayList<Estudiante>();

    // Agregar estudiantes a la lista

    Collections.sort(estudiantes);
}

En este ejemplo, la clase Estudiante implementa la interfaz Comparable para permitir la comparación y ordenación según los criterios especificados. La lista de estudiantes puede ordenarse usando Collections.sort().

9. strip()

El método strip() se utiliza para eliminar cualquier espacio en blanco al inicio y al final de la string especificada.

Sintaxis de strip()

public String strip()

Parámetro(s)

Ninguno

Valor de retorno

Devuelve una nueva string que representa el contenido de esta string original, pero sin espacios en blanco iniciales ni finales.

Uso práctico de strip()

Cuando recibimos entradas de la capa de presentación, es crucial garantizar que los espacios en blanco al inicio y al final de la string no afecten los datos reales. Esto asegura que los datos se almacenen de manera consistente en la base de datos y se procesen correctamente en el backend.

El método strip() también puede emplearse para garantizar que nuestras entradas estén libres de cualquier contaminación.

public static void realizarLogin() {
    String nombreDeUsuario = obtenerNombreDeUsuarioDeLaInterfaz(); // "  usuario123 "
    String contrasenaLimpia = contrasena.strip(); // "abc"

    Cuenta cuenta = new Cuenta(nombreDeUsuario.strip(), contrasenaLimpia);

    baseDeDatos.guardar(cuenta);
}

En este ejemplo, la función realizarLogin() muestra cómo utilizar el método strip() para eliminar espacios en blanco innecesarios de las entradas, garantizando la integridad de los datos manipulados y almacenados.

10. valueOf()

El método valueOf() se emplea para obtener la representación en forma de string del argumento pasado. valueOf() tiene varias variantes sobrecargadas que facilitan la conversión de casi cualquier tipo primitivo a una string.

Sintaxis de valueOf()

public static String valueOf(char[] data)

Parámetro(s)

  • data: Matriz de caracteres a convertir en una string.

Valor de retorno

Devuelve un nuevo objeto String que contiene los datos de la matriz como una representación en string del argumento pasado.

Variantes sobrecargadas

public static String valueOf(boolean b)
public static String valueOf(char c)
public static String valueOf(int i)
public static String valueOf(long l)
public static String valueOf(float f)
public static String valueOf(double d)
public static String valueOf(char[] data)
public static String valueOf(char[] data, int offset, int count)
public static String valueOf(Object obj)

Uso práctico de valueOf()

Es posible formar una única secuencia combinando todos los elementos de un array de caracteres utilizando el método valueOf().

Ejemplo:

char[] arrayDeCaracteres = { 'a', 'b', 'c', 'd', 'e', 'f', 'g' };
String secuenciaCombinada = String.valueOf(arrayDeCaracteres);

En este ejemplo, la variable secuenciaCombinada contendrá la string “abcdefg”, formada al concatenar los caracteres del array arrayDeCaracteres. El método valueOf() es una herramienta útil para convertir diversos tipos de datos en representaciones de string.

Recapitulación

Aquí tienes un resumen rápido de los métodos de string de Java que vimos en el artículo.

Método JavaUso
indexOf ()Para encontrar el índice de la primera ocurrencia de un carácter o una cadena en la string dada.
toCharArray ()Para formar un nuevo array de caracteres a partir de esta string
charAt ()Para obtener el carácter en el índice especificado
concat ()Para anexar la string pasada al final de la string dada.
replace ()Para reemplazar todas las ocurrencias del carácter/String proporcionado por el String proporcionado
substring ()Para obtener una parte de una string a partir de la string dada.
split ()Para dividir la string dada según la expresión regular proporcionada.
compareTo ()Para comparar dos Strings lexicográficamente.
strip ()Para eliminar todos los espacios en blanco finales e iniciales de la string dada.
valueOf ()Para devolver la representación en string del argumento pasado.

Lista de otros métodos de string útiles para seguir aprendiendo

  • contains(CharSequence s)
  • isEmpty()
  • join()
  • repeat()
  • startsWith() / endsWith()
  • toLowerCase() / toUpperCase()
  • indent()

Conclusión

Las strings son fundamentales en programación y Java ofrece una clase String robusta con métodos poderosos para su manipulación. Al comprender estas herramientas, los desarrolladores pueden crear aplicaciones más eficientes y confiables.

Referencias

Compartir:
Volver al Blog