Si tuviéramos que hablar a cerca de una de las clases más utilizadas en Java sin duda tenemos que hablar de la clase String. Esta clase es la más usada por desarrolladores. Su principal función es la de almacenar y procesar texto. A diferencia de lo que algunos puedan pensar los Strings en Java son considerados objetos, esto se traduce que cada instancia que creada tiene acceso a métodos exclusivos para esa clase. Alguno de estos métodos nos permite la modificación de caracteres, que pueden incluir letras, números y signos de puntuación. Pero dejemos la teoría y avancemos hacía algo más práctico.
Podemos crear objetos String de muchas maneras. La manera más común es declarando su contenido de la siguiente manera:
String texto = "Hola Mundo";
Por supuesto podemos declarar el objeto tal como lo haríamos con cualquier otro objeto Java:
String s = new String("Hola Mundo.");
Ambos métodos son equivalentes pero si hablamos en términos de eficiencia es mucho mejor emplear el primer método dado que el segundo genera dos objetos String en lugar de uno.
Dicho lo anterior necesitamos poder aprender a trabajar con la clase String. Por ejemplo debemos conocer cómo imprimir en pantalla. Usando System.out.println() podemos usar una cadena literal o el objeto String.
System.out.println("Hola Mundo!");
Lo cierto es que Java permite concatenar cadenas de una forma muy simple. Tan solo debemos utilizar el operador + entre las cadenas de texto y variables que queramos. Por ejemplo:
"Hoy es " + variable + " aquí en Madrid."
Suele ser muy habitual que necesitemos conocer la longitud de un String. Por ejemplo para verificar si una contraseña cumple con la longitud mínima. El método usado para ello es “length”:
String s = "NTT Data";
System.out.println(s.length()); // devuelve 6
Mediante el método charAT es posible extraer un único carácter de una cadena utilizando un valor índice. La sintaxis es la siguiente Objeto_cadena.charAt(índice);
s.charAt(1); // devuelve “v”
Así el array buf adquiere el valor “no”.
Existen varios métodos para comparar dos cadenas y determinar si son iguales. El método equals que devolverá “true” en caso de coincidencia y equalsIgnoreCase que ignora si los caracteres están compuestos por minusculas o mayusculas. En ambos casos su sintaxis es muy similar:
Objeto_cadena1.equals(Objeto_cadena2);
Objeto_cadena1.equalsIgnoreCase(Objeto_cadena2);
Pero mejor verlo en un ejemplo:
String cadena1="pepe";
String cadena2="juan";
if (cadena1.equals(cadena2)){
// Ambas cadenas son iguales (no es el caso)
} else {
//Ambas cadenas no son iguales (es el caso)
}
Nota: También estar tentados en utilizar el operador == en lugar del método equals, ambos realizan pruebas diferentes para determinar la igualdad. Mientras que el método equals
compara los caracteres contenidos en una String, el operador == compara dos referencias de objeto para ver si se refieren a la misma instancia. Por tanto, no podemos usar el signo == por que esta sería una comparación binaria de punteros a memoria y no nos devolvería el valor correcto.
Otra opción es que necesitemos comparar cadenas simplemente para ordenarlas. La mejor opción es utilizar el método compareTo(). Este método devuelve 0 si ambas cadenas son iguales y un valor negativo o positivo en caso de que una sea mayor o menor. Por ejemplo:
if (cadena1.compareTo(cadena2) == 0)
System.out.println("cadena1 y cadena2 son iguales");
else
if (cadena1.compareTo(cadena2) < 0)
System.out.println ("cadena1 va antes que cadena2");
else
if (cadena1.compareTo(cadena2) > 0)
System.out.println("cadena2 va después que cadena1");
Existe un método que nos permite buscar dentro de una cadena un determinado valor. Mediante indexOf() que devuelve el índice (int) correspondiente a la primera aparición del carácter en la cadena.
Sintaxis:
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
public int indexOf(int ch)
public int indexOf(int ch, int fromIndex)
Ejemplo:
public class ContadorDePalabras {
public static void main(String[] args) {
// Texto
String sTexto = "palabra o palabra y palabra";
// Texto que vamos a buscar
String sTextoBuscado = "palabra";
// Contador de ocurrencias
int contador = 0;
while (sTexto.indexOf(sTextoBuscado) > -1) {
sTexto = sTexto.substring(sTexto.indexOf(
sTextoBuscado)+sTextoBuscado.length(),sTexto.length());
contador++;
}
System.out.println (contador);
}
}
Y así llegamos al final de este artículo. Como has podido ver la clase String nos ofrece una serie de métodos que podemos utilizar para manipular cadenas de caracteres. En este artículo hemos visto solo unas pocas opciones, las más comunes, otras las iremos viendo en próximos artículos. Si te ha gustado este artículo no dudes en compartir y dejar tus comentarios si tienes alguna duda.