CodeGym /Cursos /JAVA 25 SELF /Métodos básicos de String

Métodos básicos de String

JAVA 25 SELF
Nivel 9 , Lección 3
Disponible

1. Método length(): ¿cuántos caracteres hay en la cadena?

El método length() devuelve el número de caracteres de una cadena. No es exactamente lo mismo que «cantidad de bytes» (especialmente si la cadena contiene emojis o caracteres Unicode), pero para la mayoría de tareas — es justo lo que necesitas.

Ejemplo de uso

String name = "Vasilisa";
int length = name.length();
System.out.println("Número de letras del nombre: " + length); // 8

Para qué sirve

  • Comprobar si el usuario ha introducido una cadena vacía.
  • Comprobar la longitud mínima/máxima de una contraseña.
  • Saber cuántos caracteres quedan hasta el límite (por ejemplo, en un SMS o un tuit).

Ejemplo: comprobación de cadena vacía

String input = "";
if (input.length() == 0) 
{
    System.out.println("¡La cadena está vacía!");
}

Truco: para comprobar si una cadena está vacía también existe el método isEmpty(), pero hablaremos de él más adelante.

FAQ breve

  • El método length() no acepta argumentos (los paréntesis van siempre vacíos).
  • Si la cadena contiene espacios, ¡también se cuentan como caracteres!
  • Si la cadena es null, llamar a length() provocará NullPointerException — comprueba primero si es null.

2. Método substring(): extraemos parte de una cadena

El método substring() permite obtener una subcadena — «cortar» un fragmento por los índices indicados.

Existen dos formas principales de llamada:

  • str.substring(startIndex) — desde la posición startIndex hasta el final de la cadena.
  • str.substring(startIndex, endIndex) — desde la posición startIndex hasta endIndex (sin incluir el carácter con índice endIndex).

Atención: la indexación de caracteres en una cadena empieza en 0.

Ejemplos de uso

Ejemplo 1: Obtener las tres primeras letras del nombre

String name = "Vasilisa";
String firstThree = name.substring(0, 3); // "Vas"
System.out.println(firstThree);

Ejemplo 2: Obtener la extensión de un archivo

String fileName = "document.pdf";
int dotIndex = fileName.indexOf(".");
String extension = fileName.substring(dotIndex + 1); // "pdf"
System.out.println(extension);

Ejemplo 3: Los últimos 4 caracteres de la cadena

String cardNumber = "1234567890123456";
String lastFour = cardNumber.substring(cardNumber.length() - 4); // "3456"
System.out.println("Últimos 4 dígitos: " + lastFour);

Detalles y consideraciones

  • Índices incorrectos (startIndex < 0, endIndex > longitud, startIndex > endIndex) provocan StringIndexOutOfBoundsException.
  • El método siempre devuelve una cadena nueva — la original no cambia.
  • La segunda forma (con dos parámetros) no incluye el carácter con índice endIndex.

String str = "abcdef"; 
// Índices: 0 1 2 3 4 5

str.substring(1, 4)  "bcd" // caracteres con índices 1, 2 y 3
Esquema de funcionamiento de substring(start, end)

3. Método indexOf(): buscamos un carácter o una subcadena

El método indexOf() busca la posición (índice) de la primera aparición de un carácter o subcadena dados.

  • Si lo encuentra — devuelve el índice (desde 0).
  • Si no lo encuentra — devuelve -1.

Ejemplos de uso

Ejemplo 1: Encontrar el primer punto en un email

String email = "ivan.petrov@mail.com";
int dotIndex = email.indexOf('.');
System.out.println("El primer punto está en la posición: " + dotIndex); // 4

Ejemplo 2: Encontrar una subcadena

String text = "¡Me encanta Java!";
int index = text.indexOf("Java");
System.out.println(index); // 12

Ejemplo 3: Encontrar un carácter después de una posición dada

String s = "abracadabra";
int firstA = s.indexOf('a'); // 0
int secondA = s.indexOf('a', firstA + 1); // 3
System.out.println("La segunda 'a' está en la posición: " + secondA);

Detalles y consideraciones

  • Si el carácter/la subcadena aparecen varias veces, se devuelve el índice de la primera aparición.
  • Para buscar la última aparición, usa lastIndexOf().
  • Para un carácter usa comillas simples: 'a'; para una subcadena — dobles: "abc".

Ejemplo: búsqueda de la extensión de un archivo

String fileName = "report.final.version.docx";
int lastDot = fileName.lastIndexOf('.');
String extension = fileName.substring(lastDot + 1);
System.out.println("Extensión del archivo: " + extension); // "docx"

4. Método charAt(): obtenemos un carácter por índice

El método charAt(index) devuelve el carácter de la cadena por su índice.

Ejemplos de uso

Ejemplo 1: Comprobar la primera letra de una cadena

String city = "Minsk";
char first = city.charAt(0); // 'M'
System.out.println("Primera letra: " + first);

Ejemplo 2: Comprobar si la cadena empieza con mayúscula

String word = "Java";
if (Character.isUpperCase(word.charAt(0))) 
{
    System.out.println("¡La palabra empieza con mayúscula!");
}

Ejemplo 3: Recorrer todos los caracteres de una cadena

String text = "Hola";
for (int i = 0; i < text.length(); i++) 
{
    System.out.println("Carácter #" + i + ": " + text.charAt(i));
}

Detalles y consideraciones

  • Un índice fuera de rango (por ejemplo, -1 o >= longitud) provocará StringIndexOutOfBoundsException.
  • El método devuelve un valor de tipo char, no una cadena.

5. Método toCharArray(): convertimos una cadena en un array de caracteres

El método toCharArray() es una forma sencilla de convertir una cadena en un array de caracteres (char[]). Útil para procesamiento carácter a carácter, ordenación, comprobaciones, etc.

Ejemplo de uso:

String text = "Hello";
char[] characters = text.toCharArray();

for (char c : characters) 
{
    System.out.println(c);
}
// Salida:
// H
// e
// l
// l
// o

Para qué sirve:

  • Procesamiento de caracteres: los arrays son más cómodos para lógica carácter a carácter (por ejemplo, comprobar anagramas).
  • Compatibilidad: algunas API esperan char[] como argumento.

6. Método replace(): reemplazamos subcadenas

El método replace(CharSequence target, CharSequence replacement) reemplaza todas las apariciones de la subcadena target por replacement. Devuelve una cadena nueva; la original no cambia.

Ejemplo de uso:

String sentence = "Me encanta programar en Java.";
String newSentence = sentence.replace("Java", "Java 25");
System.out.println(newSentence);
// Salida: Me encanta programar en Java 25.

String email = "support@company.com";
String cleanEmail = email.replace("@", "[at]");
System.out.println(cleanEmail);
// Salida: support[at]company.com

Detalles y consideraciones

  • Se reemplazan todas las apariciones.
  • String es inmutable: replace() devuelve una cadena nueva.
  • Para reglas más complejas, usa replaceAll() con una expresión regular.

7. Métodos trim() y strip(): eliminamos espacios

Ambos métodos eliminan caracteres «invisibles» al inicio y al final de la cadena.

  • trim() — método clásico: elimina espacios, tabulaciones, saltos de línea y parte de los caracteres de control, pero no todos los espacios Unicode.
  • strip() — método moderno: tiene en cuenta todos los tipos de espacios según el estándar Unicode. Preferible en proyectos nuevos.

Ejemplo de uso:

String s1 = "   Hola, mundo!   ";
System.out.println(s1.trim());
// Salida: "Hola, mundo!"

String s2 = " \u2005  Java 11  \u2005 "; // \u2005 — es un espacio Unicode
System.out.println("trim(): " + s2.trim());
System.out.println("strip(): " + s2.strip());
// Salida:
// trim():  Java 11  
// strip(): Java 11

Para qué sirve:

  • Limpieza de la entrada de usuario de espacios sobrantes.
  • Normalización de datos de archivos/registros antes del procesamiento.

8. Práctica: resolvemos ejercicios

Ejercicio 1: Comprobar la longitud de una contraseña

String password = "qwerty";
if (password.length() < 8) 
{
    System.out.println("¡La contraseña es demasiado corta!");
}
else 
{
    System.out.println("La contraseña es válida.");
}

Ejercicio 2: Extraer el nombre de un nombre completo

String fullName = "Ivanov Ivan Ivanovich";
int firstSpace = fullName.indexOf(' ');
String name = fullName.substring(firstSpace + 1, fullName.indexOf(' ', firstSpace + 1));
System.out.println("Nombre: " + name); // "Ivan"

Ejercicio 3: Comprobar que la cadena empieza por una letra determinada

String surname = "Petrov";
if (surname.charAt(0) == 'P')
{
    System.out.println("El apellido empieza por la letra P");
}

Ejercicio 4: Obtener el dominio de un email

String email = "vasya.pupkin@gmail.com";
int at = email.indexOf('@');
String domain = email.substring(at + 1);
System.out.println("Dominio: " + domain); // "gmail.com"

Ejercicio 5: Encontrar todas las apariciones de la letra 'a' en la cadena

String s = "abracadabra";
int pos = s.indexOf('a');
while (pos != -1) 
{
    System.out.println("La letra 'a' se encuentra en la posición: " + pos);
    pos = s.indexOf('a', pos + 1); // buscamos desde la última posición encontrada
}

9. Errores típicos al trabajar con métodos de String

Error n.º 1: acceso fuera de los límites de la cadena
Muy a menudo se confunden los índices y se accede a un carácter/subcadena que no existe.

String s = "Java";
char c = s.charAt(4); // ¡Error! Índices 0..3
String s = "Hello";
String sub = s.substring(3, 10); // ¡Error! La longitud de la cadena es 5

Error n.º 2: confusión con inclusión/exclusión del índice
El método substring(start, end) incluye el carácter con índice start, pero NO incluye el carácter con índice end.

Error n.º 3: esperar que indexOf devuelva algo distinto de -1 cuando no hay subcadena
Comprueba el resultado antes de usarlo, especialmente si luego lo usas en substring.

Error n.º 4: tratamiento incorrecto de cadenas vacías
Si la cadena está vacía (""), llamar a charAt(0) o substring(0, 1) provocará un error. Comprueba la longitud primero.

Error n.º 5: trabajar con cadenas null
Si la cadena es null, llamar a cualquier método (length(), substring(), etc.) causará NullPointerException. Comprueba siempre si es null antes de procesarla.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION