Buenas,
En este tema veremos mas a fondo la clase String, la cual ya hemos mencionado y usado muchas veces.
Sobre String
-
A pesar que String es una clase, los objetos de esta no necesitan (aunque se pude) ser instanciados de la manera tradicional (
new String()
) ya que Java maneja los valores String ("Mi valor"
) como objetos del mismo.
Eso nos permite hacer cosas como esta:"Mi cadena :)".charAt(0); // Devuelve 'M'.
-
String pertenece al paquete
java.lang
por lo que no necesita ser importado.
Métodos de String
Pondré aquí los mas importantes por lo que si alguien quiere mas información, puede irse a la API oficial de Java.
Métodos mas usados
Método | Utilidad | Parámetros | Devuelve | Ejemplo |
---|---|---|---|---|
charAt([index]) |
Devuelve un el carácter de la posición recibida por parametro. | Posición empezando por 0 (int ). |
Caracter (char ). |
miCadena.charAt(1); // Devuelve 'o'. |
length() |
Devuelve el tamaño (cantidad de caracteres) de la cadena | Nada. | Cantidad de caracteres (int ). |
miCadena.length(); // Devuelve 10. |
substring([index]) |
Devuelve otra cadena con los caracteres desde el indice hasta el final de la cadena original | Posición inicio sub-cadena (int ). |
Sub-cadena (String). | miCadena.substring(2); // Devuelve "la mundo". |
substring([index], [index]) |
Devuelve otra cadena con los caracteres desde el primer indice hasta el segundo | Posición inicio sub-cadena (int ). Posición final (la ultima no se devuelve) sub-cadena (int ). |
Sub-cadena (String). | miCadena.substring(0, 7); // Devuelve "Hola m". |
toLowerCase() |
Devuelve una cadena basada en la original con todos los caracteres alfabéticos en minúsculas. | Nada. | Cadena en minúsculas (String ). |
miCadena.toLowerCase(); // Devuelve "hola mundo". |
toUpperCase() |
Devuelve una cadena basada en la original con todos los caracteres alfabéticos en mayúsculas. | Nada. | Cadena en mayúsculas (String ). |
miCadena.toUpperCase(); // Devuelve "HOLA MUNDO". |
equals([String]) |
Comprueba si dos cadenas son iguales. | Cadena a comparar con la original (String ). |
Valor booleano. | miCadena.equals("HoLa mUnDo"); // Devuelve false. |
equalsIgnoreCase([String]) |
Igual que equals() pero no distingue entre mayúsculas y minusculas. |
Cadena a comparar con la original (String ). |
Valor booleano. | miCadena.equalsIgnoreCase("HoLa mUnDo"); // Devuelve true. |
contains([String]) |
Comprueba si la cadena original contiene la sub-cadena proporcionada. | Cadena a buscar en la original (String ). |
Valor booleano. | miCadena.contains("Hola"); // Devuelve true. |
startsWith([String]) |
Comprueba si la cadena original empieza con la sub-cadena proporcionada. | Cadena a comprobar (String ). |
Valor booleano. | miCadena.startsWith("mundo"); // Devuelve false. |
endsWith([String]) |
Comprueba si la cadena original termina con la sub-cadena proporcionada. | Cadena a comprobar (String ). |
Valor booleano. | miCadena.endsWith("mundo"); // Devuelve true. |
indexOf([char]) |
Devuelve la posición de la primera ocurrencia del carácter proporcionado. | Caracter a buscar (char ). |
Posición de la primera ocurrencia del carácter (int). | miCadena.indexOf('o'); // Devuelve 1. |
lastIndexOf([char]) |
Devuelve la posición de la ultima ocurrencia del carácter proporcionado. | Carácter a buscar (char ). |
Posición de la ultima ocurrencia del carácter (int). | miCadena.indexOf('o'); // Devuelve 9. |
replace([String], [String]) |
Remplaza todas las ocurrencias de la primera cadena proporcionada por la segunda. | Sub-cadena a remplazar (String ). Nueva ub-cadena (String ). |
Cadena original remplazada (String ). |
miCadena.replace("Hola", "Adiós"); // Devuelve "Adiós mundo". |
matches([reexpresion]) |
Comprueba si la cadena original coincide con la expresión regular proporcionada. | Expresion con la que comprobar (String ). |
Valor booleano. | miCadena.matches("^[hH]ola"); // Devuelve true. |
Clase de ejemplo
Cadenas.java
import java.util.Scanner;
public class Cadenas
{
public static void main(String[] args)
{
// Declarar e inicializar objeto Scanner.
Scanner entrada = new Scanner(System.in);
// Pedir y almacenar el nombre del usuario.
System.out.print("Proporciona tu nombre: ");
String nombre = entrada.nextLine();
// Verificar si el nombre contiene algún número usando una expresión regular.
if (nombre.matches(".*\\d.*"))
{
System.out.println(" > ¿Enserio tu nombre tiene números? ·_·");
}
// Imprimir la primera letra del nombre.
System.out.println(" > La primera letra de tu nombre es: " + nombre.charAt(0) + ".");
// Imprimir la última letra del nombre.
System.out.println(" > La ultima letra de tu nombre es: " + nombre.charAt(nombre.length() - 1) + ".");
// Imprimir la cantidad de caracteres del nombre.
System.out.println(" > Tu nombre tiene " + nombre.length() + " letras.");
// Verificar si el nombre contiene la cadena "hola mundo" (ignorando mayúsculas/minúsculas).
if (nombre.toLowerCase().contains("hola mundo"))
{
System.out.println(" > No me creo que tu nombre sea " + nombre + ". XD");
}
String nombreAlrreves = "";
// Recorrer el nombre desde el final hacia el inicio, agregando cada letra a la nueva cadena.
for (int i = nombre.length() - 1; i >= 0 ; i--)
{
nombreAlrreves += nombre.charAt(i) + "";
}
// Imprimir el nombre al revés.
System.out.println(" > Tu nombre al invertido es " + nombreAlrreves + ".");
// Imprimir la primera mitad del nombre.
System.out.println(" > La primera mitad de tu nombre es " + nombre.substring(0, nombre.length() / 2) + ".");
// Imprimir la segunda mitad del nombre.
System.out.println(" > La segunda mitad de tu nombre es " + nombre.substring(nombre.length() / 2) + ".");
}
}
Output de prueba
Proporciona tu nombre: Sugoli15
> ¿Enserio tu nombre tiene números? ·_·
> La primera letra de tu nombre es: S
> La ultima letra de tu nombre es: 5
> Tu nombre tiene 8 caracteres.
> Tu nombre invertido es 51iloguS.
> La primera mitad de tu nombre es Sugo.
> La segunda mitad de tu nombre es li15.
En el siguiente tema volveremos a la POO y hablaremos un poco de la herencia.