Saltar al contenido principal

String y Scanner en Java

En Java veremos que es muy habitual trabajar con texto, por lo que en esta guía cubriremos los métodos más útiles de la clase String y el uso de Scanner.


1. Scanner – Leer entrada del usuario

La clase Scanner permite capturar datos ingresados por consola. Es decir, muchas veces, al crear una variable, no le daremos nosotros como programadores un valor.

String nombre = "Maria";

Sino que le preguntaremos "al usuario" que introduzca su nombre, de manera que no introducimos ningún valor desde código, sino desde la consola.

Para ello utilizaremos Scanner. La estructura base es:

// 1. Importar Scanner (siempre igual)
import java.util.Scanner;

public class EjemploScanner {
public static void main(String[] args) {
// 2. Crear Scanner (siempre iguak)
Scanner sc = new Scanner(System.in);

// 3. Mostrar con un sysout el mensaje de "la pregunta al usuario"
System.out.print("Ingresa tu nombre: ");

// 4. Guardar el valor introducido por el usuario en una variable
String nombre = sc.nextLine();

// Podemos utilizar el Scanner tantas veces como queramos
System.out.print("Ingresa tu edad: ");
int edad = sc.nextInt(); // nextInt() lee un entero

System.out.print("Ingresa tu altura (en metros): ");
double altura = sc.nextDouble(); // nextDouble() lee un decimal

// Importante: Consumir el salto de línea pendiente después de nextInt/nextDouble
sc.nextLine();

// 5. Cerrar el Scanner
sc.close();
}
}

Métodos comunes de Scanner

MétodoDescripción
nextLine()Lee una línea completa (String).
next()Lee una palabra (hasta espacio).
nextInt()Lee un número entero.
nextDouble()Lee un número decimal.
nextBoolean()Lee un booleano.

2. Métodos esenciales de String

La clase String es inmutable y tiene muchos métodos útiles. Aquí los más importantes.

length() – Longitud del string

Devuelve un entero con el número de caracteres del texto (cuenta espacios).

String texto = "Hola mundo";
int longitud = texto.length(); // 10

charAt(index) – Carácter en una posición

Devuelve el caracter que hay en la posición indicada en tecto.charAt(posición).

char letra = texto.charAt(0);   // 'H'
char ultima = texto.charAt(texto.length() - 1); // 'o'

⚠️ IMPORTANTE En Java se empieza a contar desde 0. Por lo que la primera posición es 0, la segunda es 1, la tercera es 2...

toLowerCase() / toUpperCase() – Convertir a minúsculas/mayúsculas

Convierte el texto a mayúsculas o minúculas.

String minus = texto.toLowerCase(); // "hola mundo"
String mayus = texto.toUpperCase(); // "HOLA MUNDO"

substring(inicio) / substring(inicio, fin) – Extraer parte

Extrae un "trozo" del texto. Podemos indicarle un solo índice, y cortará el texto desde esa posición haste el final:

String sub1 = texto.substring(5);    // "mundo" (desde índice 5 hasta el final)

O indicarle dos índices:

  • El inicio
  • El final

Y cortará el texto desde la posición inicio hasta la posición final:

String sub2 = texto.substring(0, 4); // "Hola" (índice 0 a 3)

indexOf(String) / lastIndexOf(String) – Buscar posición

Estos métodos devuelven un entero con la posción de cierta palabra o letra en el texto.

int pos1 = texto.indexOf("mundo");   // 5
int pos2 = texto.indexOf("x"); // -1 (no encontrado)
int pos3 = texto.lastIndexOf("o"); // 7 (última 'o')

equals() / equalsIgnoreCase() – Comparar contenido

Compara si dos textos con iguales, devolviendo un booleano. Muy útil en los if.

String a = "Java";
String b = "java";
boolean igual = a.equals(b); // false
boolean igualSinCase = a.equalsIgnoreCase(b); // true

contains() – Subcadena

Verifica si contiene una subcadena.

boolean tiene = texto.contains("mun");   // true

startsWith() / endsWith() – Verifica prefijo/sufijo

Verifica si el texto empieza o acaba con cierto trozo.

boolean empieza = texto.startsWith("Hol"); // true
boolean termina = texto.endsWith("ndo"); // true

trim() – Elimina espacios al inicio y final

Elimina espacios al inicio y final del texto. Muy útil ya que a veces los espacios "no se ven" y puede que estén, por lo que es recomendable después de un Scanner usar trim() para limpiar el texto de espacios.

String conEspacios = "   Hola   ";
String limpio = conEspacios.trim(); // "Hola"

replace() / replaceAll() – Reemplazar caracteres o subcadenas

Reemplaza dentro de un texto un caracter por otro.

La sintaxis es texto.replace(caracter_original, nuevo_caracter).

String reemplazo = texto.replace('o', 'a'); // "Hala munda"
String reemplazo2 = texto.replaceAll(" ", "_"); // "Hola_mundo"

3. Resumen rápido de métodos

MétodoUso
length()número de caracteres
charAt(i)carácter en la posición i
toLowerCase() / toUpperCase()cambiar mayúsculas/minúsculas
substring(i, j)extraer desde i hasta j-1
indexOf(s)primera posición de s, o -1
lastIndexOf(s)última posición de s
equals(s)comparar exacto
equalsIgnoreCase(s)comparar sin distinguir mayúsculas
contains(s)¿contiene s?
startsWith(s) / endsWith(s)¿empieza/termina con s?
trim()eliminar espacios extremos
split(regex)dividir en arreglo
replace(a, b) / replaceAll(regex, b)reemplazar