Sie sind auf Seite 1von 24

CADENAS Y CARACTERS

La clase String se utiliza para representar cadenas en Java. Algunos mtodos son; length, charAt y getChars de String.

El mtodo length se utiliza para determinar el nmero de caracteres en una cadena.

El mtodo charAt devuelve el carcter ubicado en una posicin especfica de la cadena; se recibe un argumento como ndice, y devuelve el carcter en esa posicin.

El mtodo getChars, se utiliza para copiar los caracteres de una cadena en un arreglo de caracteres.

JavaTm Como Programar: Deitel Quinta Edicin Pag. 451

Lucio Gpe. Quirino Rodrguez

Ejemplos:
1.
String variable=Programacin en Java;
int n = variable.length();

2.

char c1,c2; String Cadena1=Posicin; c1 = cadena1.charAt(1); c2 = cadena1.charAt(4); // c1 se convierte en o // c2 se convierte en c

3.

String s1= "Hola a todos";


char arregloChar[] = new char [4]; s1.getChars(0,4,arregloChar,0);
Primer arg, ndice inicial en la cadena; segundo, longitud de la cadena; tercero,lugar donde se va a copiar la cadena; cuarto, ndice inicial en donde se van a colocar los caracteres copiados

for ( int cuenta = 0;cuenta < arregloChar.length;cuenta++) salida +=arregloChar[cuenta];

import javax.swing.*; public class Cadena1{ public String s1= "Hola a todos"; public char arregloChar[] = new char [4]; public void Checa(){ String salida = "s1: " + s1; salida +="\n longitud de s1: "+ s1.length();; salida += "\nLa cadena invertida es :";

for ( int cuenta = s1.length() -1;cuenta >= 0;cuenta--) Primer arg, ndice inicial en la cadena; segundo, longitud de la salida +=s1.charAt(cuenta) + " "; cadena; tercero,lugar donde se va a copiar la cadena; cuarto, s1.getChars(0,4,arregloChar,0); ndice inicial en donde se van a colocar los caracteres copiados salida +="\nEL arreglo de caracteres es :"; for ( int cuenta = 0;cuenta < arregloChar.length;cuenta++) salida +=arregloChar[cuenta]; JOptionPane.showMessageDialog(null,salida,"Mtodos de la clase String", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } }

Lucio Gpe. Quirino Rodrguez

El mtodo equals compara la igualdad entre dos cadena o una cadena o una literal, El mtodo equals (un mtodo de la clase Object, redefido en String), el mtodo devuelve un true si los objetos son iguales y false en caso contrario. El mtodo equalsIgnoreCase no distingue el uso de maysculas y minsculas al realizar una comparacin. Por lo tanto hola y HOLA se considera dos cadenas iguales. El resultado de esta comparacin es true. El mtodo compareTo de String compara dos cadenas, el cual devuelve 0 si las cadenas son iguales, un nmero negativo si la cadena que invoca a compareTo es menor que la cadena que se pasa como argumento, y un nmero positivo si la cadena que invoca a compareTo es mayor que la cadena que se paso como argumento. El mtodo compareTo utiliza una comparacin lexicogrfica; es decir, compara los valores numricos de los caracteres correspondientes en cada cadena. El mtodo regionMatches compara si ciertas porciones de dos cadenas son iguales. El primer argumento es el ndice inicial en la cadena que invoca el mtodo. El segundo argumento es una cadena de comparacin. El tercer argumento es el ndice inicial en la cadena de comparacin. El ltimo argumento es el nmero de caracteres a comparar entre las dos cadenas. El mtodo devuelve un true solamente si el nmero especificado de caracteres es lexicogrficamente iguales. If (s3.regionMatches( 0, s4, 0, 5)) If (s3.regionMatches( true, 0, s4, 0, 5))

Lucio Gpe. Quirino Rodrgue

Ejemplo: 1. String s1 = new String ("hola");


String s2 = new String ("hola");
if (s1.equals(s2)) resultado=Son iguales; else resultado=no son iguales;

Se crea un nuevo objeto String con una copia de la literal de cadena hola, y se le asigna el nuevo objeto a la variable s1

2.

String s1 = new String ("hola"); String s2 = new String (HOLA"); if (s1.equalsIgnoreCase(s2))

resultado=Son iguales;
else resultado=no son iguales;

3.

String s1 = new String ("hola"); String s2 = new String (HOLA"); int n = s1.comparaTo(s2); if (n = =0) resultado= Son iguales; else if (n < 0) resultado= S1 va antes de s2; else resultado=S2 va antes de s1;

4.

String s1 = new String (Feliz Cumpleaos"); String s2 = new String (feliz Cumpleaos); if (s1.regionMatches (0,s2,0,5)) salida = "Los primeros 5 caracteres de s1 y s2 concuerdan\n"; else salida = "Los primeros 5 caracteres de s1 y s2 no concuerdan\n"; if (s1.regionMatches (true,0,s2,0,5)) salida += "Los primeros 5 caracteres de s1 y s2 concuerdan\n"; else salida += "Los primeros 5 caracteres de s1 y s1 no concuerdan\n";

import javax.swing.JOptionPane; public class Compara { Se crea un nuevo objeto String con una copia de la literal de cadena hola, y se le asigna el String s1 = new String ("hola"); nuevo objeto a la variable s1 String s2 = "Adios"; String s3 = "Feliz Cumpleaos"; Comparacin entre String s4 = "feliz Cumpleaos"; public void Checa() { cadenas String salida = "S1 = "+ s1 + "\ns2 = "+ s2+ "\ns3 = "+s3 +"\ns4 ="+s4+"\n\n"; if (s1.equals("hola")) Equals, equalIgnoreCase, salida += "S1 es igual a \"hola\"\n"; else compareTo y regionMatches salida += "S1 es distinto a \"hola\"\n"; //Comprobar con comparaTo if ( s1 == "hola") salida += "\ns1.compareTo(s2) es "+s1.compareTo(s2)+ salida += "S1 es igual a \"hola\"\n"; "\ns2.compareTo(s1) es "+s2.compareTo(s1)+ else "\ns1.compareTo(s1) es "+s1.compareTo(s1)+ salida += "S1 es distinto de \"hola\"\n"; "\ns3.compareTo(s4) es "+s3.compareTo(s4)+ if (s3.equalsIgnoreCase(s4)) "\ns4.compareTo(s3) es "+s4.compareTo(s3)+"\n\n"; salida += "S3 es igual a s4\n"; // Probar regionesMatches susceptible a Maysculas else if (s3.regionMatches (0,s4,0,5)) salida += "S3 es distinta a s4\n"; salida += "Los primeros 5 caracteres de s3 y s4 concuerdan\n"; else salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan\n"; // Probar regionesMatches susceptible a Maysculas if (s3.regionMatches (true,0,s4,0,5)) salida += "Los primeros 5 caracteres de s3 y s4 concuerdan\n"; else salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan\n"; JOptionPane.showMessageDialog (null, salida, "Comparacion ente cadenas", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } }

Lucio Gpe. Quirino Rodrgue

Localizacin de caracteres y subcadenas en las cadenas IndexOf y lastIndexOf, buscan un carcter o subcadena especificada en una cadena. Si indexOf encuentra el cracter, devuelve el ndice de ese carcter en la cadena; en caso contrario indexOf devuelve -1. Existen dos versiones de indexOf que buscan caracteres en la cadena. Ejemplo: #1 String letras = abcdefghijklmabcdefghijklm; letras.indexOf(c); indexOf realiza una bsqueda desde el inicio la cadena. Si lo encuentra devuelve el ndice sino, devuelve -1 letras.indexOf(a,1); El 1 indica que el indexOf iniciar la bsqueda en a partir de la primera posicin de la cadena Ejemplo: #2 letras.lastIndexOf(c); Iniciar la bsqueda desde el final de la cadena, hacia el inicio de la misma. letras.lastIndexOf(a,25); El 25 indica que el lastIndexOf iniciar la bsqueda en esa posicin hasta la posicin 1 de la cadena
Lucio Gpe. Quirino Rodrguez

Ejemplo: 1.
if (cadena1.indexOf(cadena2,0) >= 0) resultado = cadena2 + Si existe en +cadena1;

else
resultado = cadena2 + No existe en +cadena1;

Ejemplo # 3 letras.lastIndexOf(def); String letras = abcdefghijklmabcdefghijklm;

indexOf dar como resultado un 3 ya que la cadena def, se encuentra a partir de la posicin 3, iniciando en 0. Ejemplo # 4 letras.IndexOf(def,7); El 7 indica que el IndexOf iniciar la bsqueda en esa posicin de la cadena. Ejercicio: Se tiene la siguiente cadena abcdefggijklmabcdefghijklm

Lucio Gpe. Quirino Rodrguez

Cmo extraer subcadenas de las cadenas La clase String proporciona dos mtodos substring para permitir la creacin de un nuevo objeto String al copiar parte de un objeto String existente. Ejemplo #1 letras.substring(20); Toma un argumento, este argumento especfica el ndice inicial en la cadena, a partir en el cual se van a copiar caracteres. Va a tomar la subcadena a partir del ndice 20 hasta el final Cadena1 = Posicin Resultado = cadena1.substring(2,5); String letras = abcdefghijklmabcdefghijklm;

La variable resultado recibe la cadena sic

Lucio Gpe. Quirino Rodrguez

Ejemplo #2 letras.substring(3,6);

String letras = abcdefghijklmabcdefghijklm;

Va a tomar la subcadena desde el ndice 3 hasta 6 Concatenacin de cadenas El mtodo concat de String concatena dos objetos String y devuelve un nuevo objeto String, el cual contiene los caracteres de ambos objetos String originales. Si el argumento String contiene caracteres, devuelve la cadena original. Ejemplo # 1 s1.concat (s2); String s1 = new String (Feliz); String s2 = new String (Cumpleaos); Mtodos Varios String La clase String proporciona varios mtodos que devuelven copias modificadas de cadenas, o que devuelven arreglos de caracteres. Mtodo replace devuelve un nuevo objeto, en el que cada ocurrencia del carcter 1 en la cadena s1 se remplaza con el carcter L. Este mtodo no modifica la cadena original.
Lucio Gpe. Quirino Rodrguez

Ojo: Si no hay ocurrencias del primer argumento en la cadena, el mtodo replace devuelve la cadena original.

Mtodo toUpperCase de String se genera un nuevo objeto con maysculas, cuyas letras minsculas correspondientes existen en s1. Devuelve un nuevo objeto que contiene la cadena convertida y deja la cadena original, sin cambios. Si no hay caracteres que convertir, este mtodo devuelve la cadena original.

Mtodo toLowerCase devuelve un nuevo objeto con las letras minsculas, cuyas letras maysculas correspondientes existen en S2. La cadena original permanece sin cambios.

Mtodo trim elimina todos los caracteres de espacio en blanco que aparecen al principio o al final en la cadena en la que opera trim. Se devuelve un nuevo objeto que contiene la cadena sin espacio en blanco a la izquierda o a la derecha.

Lucio Gpe. Quirino Rodrguez

Ejemplo: 1.
Cadena1 = Java;

Resultado = Cadena1.toUpperCase();

2.

Cadena1 = Versin 1.1; Resultado = Cadena1.toLowerCase();

3.

Cadena1 =

Centro

Resultado = Cadena1.trim();

import javax.swing.*; public class Varios{ public String s1 = new String("hola"); public String s2 = new String("ADIOS"); public String s3 = new String(" espacios "); public void Checa() { String salida ="s1 = "+s1 +"\ns2 = "+s2+"\ns3 = "+s3; // Provar el mtodo replace salida += "\n\nReemplazar 'l' con 'L' en S1: "+s1.replace ('l','L'); // Provar el mtodo toLowerCase y toUppeCase salida += "\ns1.toUpperCase() = " + s1.toUpperCase() + "\ns2toLowerCase() = "+s2.toLowerCase();

//
//

Provar el mtodo trim salida += "\n\ns3 despues de trim = \""+s3.trim()+"\""; Provar el mtodo toCharArray char arregloChar[] = s1.toCharArray(); salida += "\n\ns1 como un arreglo de caracteres = "; for (int cuenta = 0; cuenta < arregloChar.length;cuenta++) salida += arregloChar[cuenta];
JOptionPane.showMessageDialog( null,salida, "Mtodos adicionales de String",JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); }

}
Lucio Gpe. Quirino Rodrguez

LA CLASE StringBuffer La clase String proporciona muchas herramientas para procesa cadenas. Sin embargo, una vez creado un objeto String, su contenido no se puede cambiar. La clase StringBuffer crea y manipula informacin en cadena dinmicas (es decir, cadenas modificables). Todo objeto StringBuffer es capaz de almacenar un nmero de caracteres especificados segn su capacidad. Si excede la capacidad, se expande automticamente para dar cabida a los caracteres adicionales. Constructores StringBuffer buffer1 = new StringBuffer( ); No se inicializa, pero tiene una capacidad de 16 caracteres por default StringBuffer buffer1 = new StringBuffer( 10 ); Capacidad inicial de la variable, aunque no esta inicializada StringBuffer buffer1 = new StringBuffer( hola); Valor inicializado para la variable buffer1

Lucio Gpe. Quirino Rodrguez

Ejemplo # 1

StringBuffer buffer = new StringBuffer (Hola, Cmo ests?)


import javax.swing.*;

buffer. toString( ); buffer. length ( ); buffer. capacity ( ); buffer. ensureCapacity( 75 ); buffer. setLength( 10 ); buffer. length ( );

public class StringBuffer1{ public StringBuffer buffer= new StringBuffer ("Hola, Cmo ests?");
public void Checa() { String salida = "Buffer ="+buffer.toString() +"\nlongitud = "+ buffer.length() + "\ncapacidad = "+ buffer.capacity(); buffer.ensureCapacity(75); salida += "\n\nNueva Capacidad = "+ buffer.capacity(); buffer.setLength(10); salida += "\n\nNueva logitud = "+buffer.length()+ "\nbuf ="+buffer.toString(); JOptionPane.showMessageDialog( null,salida, "Mtodos length y capacity",JOptionPane.INFORMATION_MESSAGE); System.exit( 0 );

}}

Lucio Gpe. Quirino Rodrguez

Ejemplo # 2 buffer.toString() buffer.charAt ( 0 )

StringBuffer buffer = new StringBuffer (hola a todos)


import javax.swing.*;

public class StringBuffer2{ public StringBuffer buffer= new StringBuffer("Hola a todos");

public void Checa(){ buffer.charAt ( 3 ) String salida = "Buffer " + buffer.toString() + "\nCaractes en 0: "+buffer.charAt(0) + "\nCaractes en 3: "+buffer.charAt(3); buffer.getChars (0, buffer.length ( ), arregloChar, 0 ) char arregloChar [] = new char [buffer.length()]; buffer.getChars(0,buffer.length(), arregloChar,0); salida += "\n\nLos caracteres son : ";

buffer.setCharAt ( 0, H) buffer.setCharAt ( 7, T) buffer.reverse ( )

for (int cuenta=0; cuenta < arregloChar.length;++cuenta) salida += arregloChar[cuenta]; buffer.setCharAt(0,'H'); buffer.setCharAt(7, 'T'); salida += "\n\nbuf = "+ buffer.toString(); buffer.reverse(); salida += "\n\nbuf = "+ buffer.toString(); JOptionPane.showMessageDialog(null,salida,"Mtodos de la clase String", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } }

Lucio Gpe. Quirino Rodrguez

Ejemplo # 3 public char arregloChar[] = {'a','b','c','d','e','f'}; public boolean valorboleano= true; public String cadena = "Hola"; public int numero1 = 7; import javax.swing.*; public double numero2 = 33.33; public class StringBuffer3{ StringBuffer buffer = new StringBuffer(); buffer.append(cadena); buffer.append( );. buffer.append( numero1 ) buffer.append( );. buffer.append( valorboleano ) buffer.append( );. buffer.append(buffer); buffer.append( );.
} public char arregloChar[] = {'a','b','c','d','e','f'}; public boolean valorboleano= true; public String cadena = "Hola"; public int numero1 = 7; public double numero2 = 33.33; public StringBuffer pbuffer = new StringBuffer("Ultimo Buffer"); public StringBuffer buffer = new StringBuffer(); public String salida; public void Checa() { buffer.append(cadena); buffer.append(" "); buffer.append(numero1); buffer.append(" "); buffer.append(valorboleano); buffer.append(" "); buffer.append(numero2); buffer.append(" "); buffer.append(buffer); buffer.append(" "); buffer.append(buffer); JOptionPane.showMessageDialog( null,buffer.toString(), "Mtodos adicionales de String",JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } Lucio Gpe. Quirino Rodrguez

Mtodo insert y delete de StringBuffer La clase StringBuffer proporciona diez mtodos insert sobrecargados, para permitir que se inserten valores en cualquier posicin de un objeto StringBuffer. Se proporcionan versiones para cada uno de los tipos primitivos. Cada uno de los mtodos toma su segundo argumento, lo convierte en una cadena y lo inserta antes del ndice especificado por el primer argumento. El ndice especificado por el primer argumento debe ser mayor o igual que 0, y menor que la longitud del objeto StringBuffer. De no ser as se produce una excepcin. Ejemplo # 4 StringBuffer buffer = new StringBuffer (def2.5) buffer.deleteCharAt(5); elimina 5 en 2.5
buffer.deleteCharAt(2,6) ; elimina a partir de 2 hasta la sexta posicin

Lucio Gpe. Quirino Rodrguez

Ejercicios Extraclase
1. Escriba un programa que utilice el mtodo compareTo de la clase String para comparar dos cadenas introducidas por el usuario. Muestre si la primer cadena es menor, igual o mayor que la segunda. 2. Escriba un programa que utilice el mtodo regionMatches de la clase String para comparar dos cadenas introducidas por el usuario. El programa deber recibir tambin como entrada el nmero de caracteres a comparar y el ndice inicial de la compara cin. El programa deber indicar si las cadenas son iguales. Ignore si los caracteres estn en maysculas o en minsculas al momento de realizar la comparacin. 3. Escriba una aplicacin que utiliza la generacin de nmeros aleatorios para crear enunciados. Use cuatro arreglos de cadenas llamados articulo, sustantivo, verbo y preposicin. Cree una oracin seleccionando una palabra al azar de cada uno de los arreglos, en el siguiente orden. Articulo, sustantivo, verbo, preposicin, articulo y sustantivo. A medida que elija cada palabra, concatnela con las palabras anteriores en el enunciado. La palabra deber separarse mediante espacios. Cuando se muestre el enunciado final, deber empezar con una letra mayscula y terminar con un punto. El programa deber generar 20 enunciados y mostrarlos. El arreglo deber contener los artculos el,un,algn y ningn; el arreglo sustantivo deber contener los sustantivos nio,seor,perro,ciudad y auto; el arreglo de verbos deber contener los verbos manej,salt,corri y pas; el arreglo de preposiciones deber contener las preposiciones a,desde, encima,debajo de, y sobre. 4. Escriba una aplicacin que codifique frases en espaol a frases en latn cerdo. El latn cerdo es una forma de lenguaje codificado. Existen muchas variaciones en los mtodos utilizados para formar frases en latn cerdo. Por cuestiones de simpleza, utilice e l siguiente algoritmo: Para formar frases en latn cerdo a partir de una frase en espaol, divida la frase en palabras con un objeto de la clase StringTokenizer. Para traducir cada palabra a una palabra en latn cerdo, coloque la primera letra de la palabra en espaol al final de la palabra y agregue la letras ae. De esta forma, la palabra salta se convierte altasae, la palabra el se convierte en leae y la palabra computadora se convierte en omputadoracae. Los espacios en blanco entre las palabras permanecen como espacios en blanco.

5. Escriba una aplicacin que lea una frase en cdigo Morse y que la convierta a su equivalencia en su Espaol y viceversa. Use espacios en blanco entre cada letra de la clave Morse
Lucio Gpe. Quirino Rodrguez

Carcter Cdigo A B .-

Carcter Cdigo P Q .--. --.-

Carcter Cdigo 3 4 -.-

C
D E F G H I

-.-.
-.. . ..-. --. . ..

R
S T U V W X

.-.
...--..-

5
6 7 8 9 0

..
-. -- ---.. ----. -----

J
K L M N O

.---..-.. --. ---

Y
Z

-.---..

Digitos 1 2 .---..--Lucio Gpe. Quirino Rodrguez

6. (Anlisis de Texto). Escribe un programa que lea varias lneas del teclado e imprima una tabla que indique el nmero de ocurrencias de cada letra del alfabeto. Por ejemplo, la frase: Ser o no ser: se es el dilema: Contiene una a, ninguna b, ninguna c, etc.

7. (Impresin de fecha). La facha se escribe en varios formatos comunes. De los ms utilizados son: 07/ 21/ 55, 25 de Abril, 1955. Escribe un programa que lea una fecha en el primer formato y la imprima en el segundo formato.

8. Escribe un programa que lea varias lneas de texto del teclado e imprima una tabla que indique el nmero de ocurrencia de las vocales (a,e,i,u y u) y las consonantes.

9. Escribe un programa que lea varias lneas de texto del teclado e imprima slo las cadenas o palabras que comiencen con la letra b.

Lucio Gpe. Quirino Rodrguez

Das könnte Ihnen auch gefallen