340 likes | 654 Views
Manipulación de caracteres e hileras de texto. La clase String de Java. ¿Qué es una hilera de caracteres?. Las hileras de caracteres son objetos que se utilizan para almacenar cadenas de texto.
E N D
Manipulación de caracteres e hileras de texto La clase String de Java
¿Qué es una hilera de caracteres? • Las hileras de caracteres son objetos que se utilizan para almacenar cadenas de texto. • Se utilizan para manipular el texto con operaciones comunes tales como pasar a mayúscula, minúscula, editar, buscar la aparición de una letra o sub-hilera dentro de otra hilera. • Existen diferentes implementaciones para las hileras de caracteres dependiendo de que tan estáticas o dinámicas sean. Autor: Edgar Casasola M.
¿Cuáles tipos de hileras de caracteres existen en Java? • En Java existe la clase “String” para hileras de tamaño estático, y la clase “StringBuffer” para hileras de tamaño dinámico. • El “StringBuffer” permite ir almacenando texto en el mismo objeto y agregar, borrar o cambiar caracteres individuales. Autor: Edgar Casasola M.
¿Qué es un String en Java? • Una instancia de la clase String es una hilera constante o “inmutable” de caracteres. • Una vez creado un String, el mismo no puede ser editado o modificado. • A pesar de lo anterior, la clase String ofrece métodos eficientes para crear nuevos String a partir de modificaciones de objetos existentes. Autor: Edgar Casasola M.
¿Cómo se puede inicializar un String en Java? • Existen varias formas de declarar e inicializar un String. • Asignando a una referencia de String un literal de String directamente. Ejemplo: String s = “ESTE ES UN LITERAL DE STRING”; • O bien creando un String tomando con los caracteres correspondientes a los valores almacenados en otro String, vector de caracteres, o vector de bytes. String s = new String(arg); // arg puede ser una referencia a un: // String o “un literal como este”. // Vector de caracteres: char []. // Vector de bytes: byte []. // StringBuffer que contiene texto. Autor: Edgar Casasola M.
Casa Casa s1 s2 s3 ¿Qué sucede en la memoria al crear referencias e instancias de String? • Hay que tener cuidado que aunque dos String tengan el mismo contenido no necesariamente “son iguales”. • Dos referencias a String son iguales si se “refieren al mismo objeto”. No si el contenido de ambos es igual. • En el siguiente caso s2 y s3 son iguales entre si, pero s1 aunque tiene el mismo valor, no es igual a s2 ni s3. Observe este caso: String s1 = “Casa”; String s2 = “Casa”; String s3 = s2; Autor: Edgar Casasola M.
¿Cuáles son las acciones más comunes que se llevan a cabo con hileras de caracteres? • Entre las operaciones más comunes que se llevan a cabo con hileras de caracteres están las siguientes: • Obtener la letra que se encuentra en una posición dada. • Conocer el tamaño de una hilera. • Extraer un fragmento de texto desde una hilera. • Comparar el contenido de dos hileras de caracteres. • Comparar el contenido de dos hileras de caracteres ignorando entre mayúsculas y minúsculas. Autor: Edgar Casasola M.
¿Cuáles son las acciones más comunes que se llevan a cabo con hileras de caracteres? (continuación) • Eliminar los blancos al inicio y al final de una hilera. • Cambio de letras a mayúscula o minúscula. • Búsqueda de un String dentro de otro. • Reemplazo de una letra en la hilera original. • Unir o fragmentar una hilera en sus partes. • Determinar si una hilera inicia o termina con algún valor específico. Autor: Edgar Casasola M.
¿Cómo puedo obtener la letra que se encuentra en una posición dada del String? • Para obtener una letra que se encuentra en una posición dada existe el método charAt(int) que recibe la posición dentro del String. • Aunque es posible obtener la letra de una posición dada, no se puede cambiar la letra dentro del mismo String ya que es estático. Autor: Edgar Casasola M.
¿Cómo se puede conocer el tamaño de un String en Java? • La clase String cuenta con un método que devuelve la cantidad de caracteres que tiene almacenada una hilera. String.length() // devuelve el tamaño • Todos los caracteres incluyendo el carácter en blanco ‘ ‘ se toman en cuenta. • No lo confunda con la variable pública estática length con que cuentan los vectores. Autor: Edgar Casasola M.
¿Cómo se puede extraer un fragmento de texto desde una hilera en Java? • Si se desea obtener un String con la subhilera se puede utilizar el método substring(int desde,int hasta). • Este método devuelve un nuevo String formado con las letras que van desde la posición indicada en el primer parámetro hasta y sin incluir el caracter que se encuentra en la posición del segundo parámetro. • Si se desea un String a partir de una posición hasta el final se puede utilizar el método substring(int desde) con solo el parámetro de la posición inicial. Autor: Edgar Casasola M.
¿Cómo se puede comparar el contenido de dos hileras de caracteres en Java? • Para comparar el contenido de dos hileras de caracteres se puede utilizar el método compareTo(String otro). Este devuelve un número positivo si el primer String es lexicográficamente mayor que el segundo (va después del primero al ordenarlos alfabéticamente), devuelve un número negativo si es menor, o bien un cero si el contenido de ambos es igual. O bien se puede utilizar el método equals(String otro) que dice si el contenido de un String es igual que otro. • Recuerde que si compara con == lo que está comparando es si las referencias a String “apuntan” o “se refieren” al mismo objeto, no se está verificando si los dos String “contienen” algo similar. Autor: Edgar Casasola M.
¿Cómo se puede comparar el contenido de dos Strings ignorando mayúsculas en Java? • Para comparar el contenido de dos hileras de caracteres sin tomar en cuenta la diferencia entre mayúsculas y minúsculas, se utiliza el método equalsIgnoreCase(String otro). • Este compara el String al que se le aplica el método con el que se recibe como parámetro. Autor: Edgar Casasola M.
¿Cómo se pueden eliminar los blancos al inicio y al final de una hilera en Java? • El método trim permite producir un nuevo String luego de eliminar los blancos al inicio y al final de un String. • Algo como: “ texto “.trim() produce: “texto” Autor: Edgar Casasola M.
¿Cómo saber si una hilera inicia o termina en una palabra específica en Java? • Los métodos: • starsWith(String inicio) • endsWith(String terminacion) sirven para darse cuenta si una palabra inicia o termina con una sub-hilera específica. • Ambos devuelven un valor booleano. Autor: Edgar Casasola M.
¿Cómo crear un String con todos los caracteres en mayúscula o minúscula? • Para crear un nuevo String con todos los caracteres en mayúscula se utiliza el método toUpperCase(). • Para convertir a minúscula se utiliza el método toLowerCase(). Autor: Edgar Casasola M.
¿Cómo se produce un nuevo String luego de reemplazar una letra en Java? • El método replace(char letraVieja, char letraNueva) permite producir un nuevo String donde la letra vieja ha sido sustituida por la letra nueva en el String que es retornado. Autor: Edgar Casasola M.
¿Cómo crear un String como producto de la unión de dos o más String? • Debido a que los Strings no son editables, los métodos de modificación generan una nueva copia del String modificado. • El String original, sobre el cual se efectuó la operación, no es modificado. • El método concat(String otro) devuelve un nuevo String producto de unir el String al que se le aplica el método con el otro String que se recibe como parámetro. Autor: Edgar Casasola M.
¿Se puede convertir un String a un vector de caracteres? • Sí, en Java existen métodos para extraer los caracteres de un objeto tipo String. • El más común es el método toCharArray() que produce un arreglo nuevo con los caracteres contenidos en el String al que se le aplica. Autor: Edgar Casasola M.
EJEMPLO 1 - Manipulación de hileras de caracteres Ir al ejemplo
EJERCICIO 1 - Manipulación de hileras de caracteres Ir al ejercicio
¿Cómo se pueden crear hileras que crecen de forma dinámica? • El StringBuffer es un objeto que permite almacenar caracteres e ir ajustando su contenido de manera dinámica dentro del mismo objeto. • Es utilizado básicamente para editar texto. Autor: Edgar Casasola M.
¿Cuál es el uso más común de los StringBuffers? • El uso más común es la edición dinámica de texto. • La ventaja es que permite que se le agreguen fragmentos de texto al final de la hilera mediante el método como append(String agregado). • También pueden insertar fragmentos de texto en medio de una hilera con el método insert(int posición, String fragmento), en este caso se pueden insertar caracteres a partir del punto específico indicado por la posición. Los demás caracteres se desplazan hacia la derecha a partir del punto donde se lleva a cabo la inserción. Autor: Edgar Casasola M.
¿Cuál es el uso más común de los StringBuffers? (continuación) • Además es posible sustituir el carácter que se encuentra en una posición dada con el método setCharAt(int posición, char nuevo). • Recuerde que estos métodos no existen en los String porque los mismos no son modificables, los String generan copias mientras que el StringBuffer es modificado internamente sin generar copias. Autor: Edgar Casasola M.
¿Cómo funciona el StringBuffer? • Los métodos insert() y append() del StringBuffer permiten modificar la hilera de texto que contiene, al igual que el setCharAt(int,char) Por ejemplo: StringBuffer expresion = new StringBuffer(); expresion.append(3); expresion.append(2); expresion.append('X'); expresion.insert(1," + "); expresion.insert(5," = "); expresion.setCharAt(8,'5'); System.out.println(expresion); Produce como resultado el String: 3+2=5 Autor: Edgar Casasola M.
¿Cómo funciona el operador binario de concatenación +? • El operador binario de concatenación + es implementado por el compilador de java mediante el uso de StringBuffers. • Una expresión como la siguiente: String mensaje = “Peso = " + 179.25 + “ kilos”; equivale a: String mensaje = new StringBuffer().append(“Peso = ").append(179.25).append(“ kilos") .toString(); Autor: Edgar Casasola M.
EJEMPLO 2 - Manipulación de hileras dinámicas de caracteres Ir al ejemplo
EJERCICIO 2 - Manipulación de hileras dinámicas de caracteres Ir al ejercicio
¿Cómo separar los términos que componen una hilera de caracteres? • El método split(“\\s”) permite fragmentar una hilera y produce un vector de String con los fragmentos producidos luego de separar la tira. • La expresión predefinida \s indica que los delimitadores de cada término son: los blancos, tabuladores, cambios de líneas, caracteres de ajuste y de retorno. Nota: El uso de la clase java.util.StringTokenizer() que sirve para el mismo fin ha sido declarado como obsoleto, y fue sustituido por el split() que sí pertenece a la clase String. Autor: Edgar Casasola M.
EJEMPLO 3 – Separación de los términos que componen una hilera Ir al ejemplo
EJERCICIO 3 - Separación de los términos que componen una hilera Ir al ejercicio
EJEMPLO 4 – Utilización de hileras para la resolución de problemas Ir al ejemplo
EJERCICIO 4 – Utilización de hileras para la resolución de problemas Ir al ejercicio
¿Dónde puedo obtener información de todos los métodos de la clase String? • La clase String es incluida automáticamente dentro del paquete java.lang. • Para más información se puede visitar la documentación en línea: • http://www.javasoft.com Autor: Edgar Casasola M.