manejo avanzado de cadenas de texto

30
MANEJO AVANZADO DE CADENAS DE TEXTO “String”

Upload: juan-luis-rivera

Post on 12-Jan-2016

9 views

Category:

Documents


0 download

DESCRIPTION

Descripción básica del manejo de cadenas en JAVA

TRANSCRIPT

MANEJO AVANZADO DE CADENAS DE TEXTO String

MANEJO AVANZADO DE CADENAS DE TEXTO StringIntroduccinEn java existe una gran variedad en las que se pueden emplear el uso de cadenas.

En esta parte veremos lasmsusadas o las quemspodran ser necesarias en el desarrollo de unproyecto.La clase String(Cadena) Los objetos String son secuencias inmutables de caracteres Unicode. Sirve para manejar cadenas de texto dentro de un programa de java.

Un objeto String representa una cadena alfanumrica de un valor constante que no puede ser cambiada despus de haber sido creada.

Operaciones para crear una nueva cadena (String):

concat, replace, substring, toLowerCase, toUpperCase, y trim.

Operaciones de bsqueda: endsWith, startsWith, indexOf y lastIndexOf. Comparisiones: equals, equalsIgnoreCase, y compareTo. Ejemplos de los tipos de operaciones que se pueden hacer con los String.CONCATENACIN DE CADENAS

Para poderconcatenaro juntar cadenas lo podemos realizar de la siguiente manera:Mediante el Smbolo + : String Palabra1="Kevin "; String Palabra2="Arnold "; System.out.println(Palabra1+Palabra2); Salida: Kevin Arnold Mediante el mtodo concat :

System.out.println(Palabra1.concat(Palabra2)); Salida: Kevin Arnold LONGITUDDE UNA CADENA

Lalongitudde una cadena podemos obtener con el mtodo length() de la siguiente manera:

String Palabra3 = "Midiendo milongitud";

System.out.println(Palabra3.length()); Salida: 20Ejemplos de los tipos de operaciones que se pueden hacer con los String.CADENA A MAYSCULA O MINSCULA

-Si queremos convertir una cadena completa a minsculas hagamos de la siguiente forma:

String Palabra3 = "Midiendo milongitud";

System.out.println(Palabra3.toLowerCase());

-Para maysculas sera lo siguiente:

System.out.println(Palabra3.toUpperCase());Ejemplos de los tipos de operaciones que se pueden hacer con los String.CARCTER POR INDICE charAt

Obtengamos el carcter de la posicin 7 considerando que las cadenas empiezan desde la posicin 0System.out.println(Palabra3.charAt(7));NDICE POR CARCTER indexOf

Para saber qu posicin usa una letra podemos usar la siguiente funcin considerando que retornara la posicin del primer carcter encontrado con el valor que le pasemosSystem.out.println(Palabra3.indexOf('e'));

Ejemplos de los tipos de operaciones que se pueden hacer con los String.Si pondramos una palabra completa en el valor enviado nos retornara el ndice del primer carcter de la palabra encontrada, si lo hubiera.Por ejemplo:System.out.println(Palabra3.indexOf("longitud") );Esto nos retornara 12 ya que en la Palabra3 tenemos la cadena Midiendo milongitud y la palabralongitudidentifica el inicio del mismoEjemplos de los tipos de operaciones que se pueden hacer con los String.SUB CADENAS O SUBSTRING

Aqu veamos la forma de obtener cierta porcin de una cadena, por ejemplo. Si quisiramos la palabra longitud de la cadena Palabra3 lo obtendramos de la siguiente manera

System.out.println(Palabra3.substring(12, Palabra3.length()));

El primer valor dentro de substring es 12 ya que la palabra longitud empieza en ese punto y luego se pasa el valor Palabra3.length lo cual retornara la longitud de Palabra3 es decir hasta el final as obteniendo la porcin que se desea obtener dara el mismo resultado si pondramos

System.out.println(Palabra3.substring(12, 20));Ejemplos de los tipos de operaciones que se pueden hacer con los String.Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer.

Un objeto StringBuffer representa una cadena cuyo tamao puede variar.

La clase StringBuffer dispone de muchos mtodos para modificar el contenido de los objetos StringBuffer.

Si el contenido de una cadena va a ser modificado en un programa, habr que sacrificar el uso de objetos String en beneficio de StringBuffer, que aunque consumen ms recursos del sistema, permiten ese tipo de manipulacionesLa clase StringBufferStringBufferCONSTRUCTORES:

-StringBuffer() - Construye un stringbuffer vaco y con capacidad inicial de 16 caracteres.-StringBuffer(int capacity) Construye un stringbuffer vaco y con una capacidad inicial especificada por el argumento de "length" caracteres.-StringBuffer(String initialString) Construye un string que representa la misma secuencia de caracteres que el string de argumento. La capacidad inicial del stringbuffer es 16 caracteres ms el largo del string. PRINCIPALES METODOS DE MODIFICACION:

append.- Concatena al stringbuffer la representacin en strings de su argumento.capacity.- Retorna la capacidad del stringbuffer.toString.- Convierte a String la representacin del stringbuffer.reverse.- Invierte la secuencia de caracteres del stringbuffer.setCharAt.- Reemplaza un carcter especificado por otro.insert.- Inserta al stringbuffer la representacin en string del argumento.

StringBufferStringBuffer EjemplosCrea un StringBuffer inicializado a un texto por defecto StringBuffer str = new StringBuffer("Hola");Le concatena otro texto, String str.append(" Mundo");Imprime en consola el resultado de la concatenacin System.out.println(str);Imprime la capacidad del StringBuffer str2 StringBuffer str2= new StringBuffer(); System.out.println(str2.capacity());Le concatena otro texto a str2str2.append("nevera"); System.out.println(str2);Imprime el contenido de str2 en modo inverso, seria areven System.out.println(str2.reverse()); StringBuilder es una clase que aparece con el JDK 5, y es la clase recomendada para la concatenacin de String en la mayora de los casos.

Su uso es idntico al StringBuffer (tienen el mismo API) por lo resulta relativamente simple reemplazar a los StringBuffer por StringBuilder.La clase StringBuilderLos mtodos de StringBuilder no son sincronizados, por lo que tiene mejor rendimiento que StringBuffer.

En general, la concatenacin de String ocurre con variables locales a un mtodo, por lo que es seguro usar StringBuilder en lugar de StringBuffer.

En mtodos que hacen uso intensivo de la concatenacin, la diferente en rendimiento puede ser importante.StringBuilderCONSTRUCTORES.

StringBuilder() : //Crea unStringBuildervaco.StringBuildersb = newStringBuilder();

StringBuilder(int n): //Crea unStringBuildervaco con capacidad para n caracteres.StringBuilder(String s); //Crea unStringBuildery le asigna el contenido del String s.String s = "ejemplo";StringBuildersb = newStringBuilder(s);

StringBuilder PRINCIPALES METODOS DE MODIFICACION:

length() Devuelve la longitud de la cadena.append(x); - Aade X al final de la cadena. X puede ser de cualquier tipo.reverse - Invierte el contenido de la cadena.toString - Devuelve el String equivalente.setCharAt(posicion, c) - Cambia el carcter que se encuentra en la posicin indicada, por el carcter c.Insert(posicion, x) - Inserta X en la posicin indicada. X puede ser de cualquier tipo.StringBuilderdelete(inicio, fin) Elimina los caracteres de la posicion inicial hasta el fin.indexOf(caracter) - Devuelve la posicin de la primera aparicin de carcter.lastIndexOf(caracter) Devuelve la posicin de la ltima aparicin de carctersubstring(n1,n2) Devuelve la subcadena (String) comprendida entre las posicionesn1yn2ambas incluidas. Si no se especifica n2, devuelve desde n1 hasta el final.StringBuilderCMO SE USA?

StringBuilder holamundoBuilder = new StringBuilder();holamundoBuilder.append("Hola, ");holamundoBuilder.append("mundo"); String holamundo = holamundoBuilder.toString();System.out.println(holamundo);

StringBuilder EjemploLa clase StringTokenizer permite a una aplicacin dividir una cadena en tokens.

El mtodo para dividir la cadena es mucho mas simple que el usado por la clase StreamTokenizer.

Los mtodos de la clase StringTokenizer no distinguen entre identificadores, nmeros y comillas, ni reconocen y se saltan los comentarios.La clase StringTokenizerSe incluye en el paquete java.utilLos tokens se separan mediante delimitadores.Los delimitadores por defecto son:espacio en blancotabulador \tsalto de lnea \nretorno \ravance de pgina \fUn objeto StringTokenizer se construye a partir de un objeto String.Para obtener los tokens del String podemos utilizar los mtodos hasMoreTokens() y nextToken().hasMoreTokens()- devuelve true si hay ms tokens que obtener en la cadena.nextToken() -devuelve un String con el siguiente token. Lanza una excepcin del tipo NoSuchElementException si no hay ms tokens.

StringTokenizerString s = "blanco, rojo, verde y azul"; StringTokenizer st = new StringTokenizer(s); while(st.hasMoreTokens()){ System.out.println(st.nextToken());}

La salida que se obtiene por pantalla es:blanco,rojo,verdeyazulSe ha separado el " String s " en tokens separados por el delimitador por defecto. En este caso el espacio en blanco.Si lo representamos de forma grfica, el funcionamiento es el siguiente:La instruccin StringTokenizer st = new StringTokenizer(s);Produce lo siguiente:

StringTokenizer EjemploSe separa el String en tokens y el objeto stapuntaal primero.A continuacin: st.hasMoreTokens() comprueba si hay tokens que extraer. En este caso st apunta a un token por lo tanto hasMoreTokens() devuelve true.A continuacin: st.nextToken() obtiene el token al que apunta st (blanco,) y avanza al siguiente.

StringTokenizer Ejemplo

El ciclo while repite el proceso, cuando se alcanza elltimo token y se avanza el siguiente la condicin delwhile ser false. Los delimitadores se puedenespecificar cuando se crea el objeto StringTokenizer.

Por ejemplo para indicar que los delimitadores son la coma y el espacio en blanco, la ejecucin del while anterior obtendra la salida:ColoresRojo VerdeYAzulLa coma no aparece ya que se ha especificado como delimitador y los delimitadores no aparecen.

StringTokenizer Ejemplo

El conjunto de delimitadores (los caracteres que separan los tokens) pueden ser especificados de dos formas, al momento de creacin o especificado para cada token.

Una instancia de StringTokenizer se comporta de una de las dos formas, dependiendo si fue creado con la bandera returnDelims con el valor true false:-Si la bandera es false, los caracteres delimitadores sirven para separar los tokens.

Un token es la secuencia mxima de caracteres consecutivos que no son delimitadores.

StringTokenizerSi la bandera es true, los caracteres delimitadores son considerados ellos mismos a ser tokens.

De esta manera un token funciona de dos formas como un carcter delimitador o una secuencia maxima de caracteres consecutivos que no son delimitadores.StringTokenizerUn objeto StringTokenizer mantiene internamente la posicin actual dentro de la cadena que es dividida. Algunas operaciones avanzan esta posicin actual a lo largo de los caracteres procesados.Un token es regresado tomando una subcadena de la cadena que fue usada para crear el objeto StringTokenizer. El siguiente ejemplo es uno de los que usa el tokenizer.

StringTokenizer st = new StringTokenizer("Esta es una prueba); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }

imprime la siguiente salida: Estaes una pruebaStringTokenizerStringTokenizer es una clase legada que es mantenida por razones de compatibilidad aunque su uso es disuadido en un nuevo cdigo. Es recomendado que si alguien busca esta funcionalidad use el mtodo split de String o el paquete java.util.regex package en lugar de eso. El siguiente ejemplo muestra como el mtodo String.split puede ser usado para dividir una cadena en sus tokens bsicos.

int j = 0;String linea = "elemento1 elemento2 elemento3;String [ ] campos = linea.split("\\s+");while(j