Sei sulla pagina 1di 8

6.

Cadenas y caracteres
Todo programa de Java se compone de una secuencia de caracteres que al agruparse son
interpretados por el computador como una serie de instrucciones que sirven para realizar
una tarea.
Una cadena en Java es un conjunto de caracteres y se crean como un objeto de la clase
String(cadena). Las cadenas se escriben encerradas entre comillas, por ejemplo:
"Rosa"
"Bogot - Cundinamarca"

Un String se puede asignar a una referencia String en una declaracin:


String nombre="Cristian"
String str = "abc";

Es equivalente a:
char dato[] = {'a', 'b', 'c'};
String str = new String(dato);

6.1. Clase String


La clase String cuenta con varios mtodos que sirven para manipular y realizar
operaciones con cadena de caracteres, a continuacin se explicara algunos mtodos y su
utilizacin:

charAt(n): Recibe un argumento entero que se utiliza como nmero de posicin


(ndice) y devuelve el carcter que est en esa posicin.
Ejemplo:
String cadena=Colombia
char toma_caracter=cadena.charAt(3);
el valor de la variable toma_caracter es igual a:o;

compareTo(): permite comparar dos cadenas de caracteres, retornando un valor


entero. Si el valor es cero(0), las dos cadenas son iguales. Si el valor es entero
positivo, el String que invoca es mayor. Si el valor es entero negativo, el String
que invoca es menor.
Ejemplo:
(string_invoca).compareTo(string_invocado)

compareToIgnoreCase(): al igual que la anterior, pero no tiene en cuenta


maysculas minsculas.
equals(): sirve para comparar dos cadenas

string1.equals(string2)

equalsIgnoreCase(): sirve para comparar dos cadenas, pero no tiene en cuenta


mayscula minscula.
length(): retorna la longitud de una cadena
String cadena=Colombia
int valor=cadena.length();
valor =8

replace(): reemplaza un carcter por otro carcter en una cadena.

String cadena=Colombia
String valor=cadena.replace(o,x);
valor =Cxlxmbia

substring(): retorna una nueva cadena a partir de otra cadena. Se puede retorna
la nueva cadena desde una un subndice inicial hasta un subndice final.
String cadena=Colombia
String valor=cadena.substring(2);
valor =ombia
String valor=cadena.substring(2,2);
valor =om

toCharArray(): convierte una cadena de caracteres en un arreglo tipo char.


String cadena=Colombia
char valor[]=cadena.toCharArray();
valor[] ={c,o,l,o,m,b,i,a};

startsWith: busca si una cadena inicia con una cadena especfica.


endsWith: busca si una cadena termina con una cadena especfica.
concat: sirve para unir dos cadenas de caracteres.
String cadena=Colombia
String cadena2=Viva ;
String unir= cadena2.concat(cadena);
unir=Viva Colombia;

toLowerCase(): convierte una cadena escrita en maysculas a minsculas


String cadena=COLOMBIA
cadena.toLowerCase();
cadena=colombia;

toUpperCase(): convierte una cadena escrita en minsculas a maysculas


String cadena=colombia
cadena.toLowerCase();
cadena=COLOMBIA;

regionMatches(): compara si una subcadena de una cadena estn en la misma


posicin de otra cadena. Contiene cuatro argumentos: el primero es el ndice
inicial, el segundo es la cadena de caracteres, el tercero es la posicin inicial a
comparar y el ltimo es el nmero de caracteres a comparar. Si contiene el
argumento trae, ignora maysculas y minsculas.
indexOf(primer ndice): busca un carcter o un grupo de caracteres en una
cadena en una posicin inicial.
lastIndexOf(ltimo ndice): busca un carcter o un grupo de caracteres en una
cadena en una posicin final.

6.1.1. Ejemplos prcticos clase String


a) Programa que permita manipular los mtodos de comparacin de cadenas: equals,
equalsIgnoreCase, compareTo, regionMatches.
import java.awt.*;
import javax.swing.*;
public class Cadenas_de_caracteres extends JApplet
{
String texto1,texto2,texto3,texto4;
public void init() {

texto1=new String("Distrital"); // primera cadena


texto2=new String("Universidad"); //segunda cadena
texto3=new String("Facultad Tecnologica"); // tercera cadena
texto4=new String("facultad tecnologica");// cuarta cadena
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("primera cadena: = " + texto1,25,25);
g.drawString("segunda cadena: = " + texto2,25,40);
g.drawString("tercera cadena: = " + texto3,25,55);
g.drawString("cuarta cadena: = " + texto4,25,70);
if(texto1.equals("Distrital"))
g.drawString("La primera cadena es igual a \"Distrital\"",25,100);
else
g.drawString("La primera cadena no es igual a \"Distrital\"",25,100);
if(texto1=="Distrital")
g.drawString("La primera cadena es igual a \"Distrital\"",25,115);
else
g.drawString("La primera cadena no es igual a \"Distrital\"",25,115);
if(texto3.equalsIgnoreCase(texto4))
g.drawString("La tercera cadena es igual a la cuarta cadena",25,130);
else
g.drawString("La tercera cadena no es igual a la cuarta cadena",25,130);
g.drawString("Comparando la primera cadena con la segunda :"+
texto1.compareTo(texto2),25,160);
g.drawString("Comparando la segunda cadena con la primera :"+
texto2.compareTo(texto1),25,175);
g.drawString("Comparando la primera cadena con la primera :"+
texto1.compareTo(texto1),25,190);
if(texto3.regionMatches(0,texto4,0,5))
g.drawString("los primeros 5 caracteres de la tercera y cuarta cadena coinciden",25,250);
else
g.drawString("los primeros 5 caracteres de la tercera y cuarta cadena no
coinciden",25,250);
if(texto3.regionMatches(true,0,texto4,0,5))
g.drawString("los primeros 5 caracteres de la tercera y cuarta cadena coinciden",25,265);
else
g.drawString("los primeros 5 caracteres de la tercera y cuarta cadena no
coinciden",25,265);
}
}

Figura 6.1. Ejecucin programa Cadena_de_caracteres

b) programa que permita manejar los mtodos de manipulacin de cadenas: charAt,


length, replace, substring, tocharArray, concat, toLowerCase, ToUpperCase.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Manipulacion_caracteres extends JFrame
{
JLabel texto1,texto2,texto3,texto4,texto5,texto6,texto7,texto8,texto9;
JTextField texto,caja2,caja3,caja4,caja5,caja6,caja7,caja8,caja9;
String cadena, unircadena;
char arreglo[], caracter;
int numero;
public Manipulacion_caracteres()
{
super("Manipulacion de caracteres");
Container contenedor=getContentPane();
contenedor.setLayout(null);
texto1=new JLabel("Cadena Original:");
texto2=new JLabel("Funcion charAt(n): obtiene un caracter especifico :");
texto3=new JLabel("Funcion length(): obtiene el numero de caracteres de una cadena de
caracteres");
texto4=new JLabel("Funcion replace(): reemplaza un caracter de una cadena de
caracteres");
texto5=new JLabel("Funcion subString(): permite obtener una subcadena de una cadena
de caracteres");
texto6=new JLabel("Funcion toCharArray(): permite convertir una cadena de caracteres a
un arreglo de tipo char");
texto7=new JLabel("Funcion concat(): permite concatenar cadenas de caracteres");
texto8=new JLabel("Funcion toLowerCase(): permite convertir una cadena de caracteres
a minsculas");
texto9=new JLabel("Funcion toUppperCase(): permite convertir una cadena de caracteres
a maysculas");
cadena=new String("Hola pueblo");
unircadena=new String(" Colombiano");
texto=new JTextField(cadena);
caracter=cadena.charAt(3);
caja2=new JTextField(" "+caracter);
numero=cadena.length();
caja3=new JTextField(""+numero);
caja4=new JTextField(cadena.replace("o","x"));
caja5=new JTextField(cadena.substring(2,8));
arreglo=cadena.toCharArray();
caja6=new JTextField(""+arreglo[0]+arreglo[1]+arreglo[2]+arreglo[3]);
caja7=new JTextField(cadena.concat(unircadena));
caja8=new JTextField(cadena.toLowerCase());
caja9=new JTextField(cadena.toUpperCase());
texto1.setBounds(0,0,520,20);
texto.setBounds(540,0,100,20);
texto2.setBounds(0,40,520,20);
caja2.setBounds(540,40,100,20);
texto3.setBounds(0,80,520,20);
caja3.setBounds(540,80,100,20);

texto4.setBounds(0,120,520,20);
caja4.setBounds(540,120,100,20);
texto5.setBounds(0,160,520,20);
caja5.setBounds(540,160,100,20);
texto6.setBounds(0,200,530,20);
caja6.setBounds(540,200,100,20);
texto7.setBounds(0,240,520,20);
caja7.setBounds(540,240,140,20);
texto8.setBounds(0,280,520,20);
caja8.setBounds(540,280,100,20);
texto9.setBounds(0,320,520,20);
caja9.setBounds(540,320,100,20);
contenedor.add(texto1);
contenedor.add(texto);
contenedor.add(texto2);
contenedor.add(caja2);
contenedor.add(texto3);
contenedor.add(caja3);
contenedor.add(texto4);
contenedor.add(caja4);
contenedor.add(texto5);
contenedor.add(caja5);
contenedor.add(texto6);
contenedor.add(caja6);
contenedor.add(texto7);
contenedor.add(caja7);
contenedor.add(texto8);
contenedor.add(caja8);
contenedor.add(texto9);
contenedor.add(caja9);
setSize(700,400);
setVisible(true);
}
public static void main(String args[])
{
Manipulacion_caracteres ventana = new Manipulacion_caracteres();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Figura 6.2. Ejecucin programa Manipulacion_de_caracteres

6.2. Clase StringTokenizer


La clase StringTokenizer descompone una oracin en palabras individuales (unidades
lexicogrficas - tokens en ingles). Est clase se encuentra en el paquete de Java:
java.util. Sus principales mtodos son:
countTokens: devuelve el numero de palabras contenidas en la cadena que se va
a descomponer.
hasMoreTokens: determina si existen ms palabras en la cadena que se est
descomponiendo.
nextToken: devuelve la siguiente palabra de una cadena.
6.2.1. Ejemplo prctico StringTokenizer

Realizar un programa que permita capturar en una caja de texto una cadena de
caracteres e imprimir cada palabra de la cadena por fila.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class ContarPalabras extends JFrame implements ActionListener
{
JLabel entrada;
JTextField texto;
JTextArea palabras;
public ContarPalabras()
{
super("Programa para Contar Palabras");
Container contenedor=getContentPane();
contenedor.setLayout(null);
palabras=new JTextArea(10,20);
entrada=new JLabel("Escriba una oracion y pulse Enter");

texto=new JTextField(50);
palabras.setEditable(false);
entrada.setBounds(20,20,200,20);
texto.setBounds(20,40,200,20);
palabras.setBounds(20,80,200,200);
contenedor.add(entrada);
contenedor.add(texto);
contenedor.add(palabras);
texto.addActionListener(this);
setSize(300,400);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String descompuesto=texto.getText();
StringTokenizer unidad= new StringTokenizer(descompuesto);
texto.setText("");
palabras.append("Cantidad de palabras:" + unidad.countTokens()+ "\n Las unidades
lexicogrficas son:\n");
while (unidad.hasMoreTokens())
palabras.append(unidad.nextToken()+"\n");
}
public static void main(String args[])
{
ContarPalabras ventana = new ContarPalabras();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Figura 6.3. Ejecucin programa ContarPalabras

6.3. Ejercicios propuestos


1. Hacer un programa que permita capturar dos cadenas por teclado e imprimir si la
primera cadena es menor o igual o mayor que la segunda.
2. Disear un programa que lea un carcter y deducir si est situado antes o despus de
la letra m en orden alfabtico.
3. Crear un programa que capture dos caracteres y deducir si estn en orden alfabtico.
4. Elaborar un programa que permita comparar dos cadenas digitadas por teclado. El
programa deber solicitar el nmero de caracteres a comparar y el ndice inicial de
la comparacin. No se debe tener en cuenta minscula ni mayscula.
5. Realizar un programa que permita leer una palabra y la imprima en un rea de texto
invertida.
6. Escribir un programa que lea una lnea de texto, la divida en tokens o unidades
lexicogrficas e imprima cada palabra inversamente.
7. Hacer un programa que lea una lnea de texto e imprima cada palabra en orden
alfabtico.
8. Escriba un programa que lea una lnea de texto y pida un carcter para buscar e
imprima cuantas veces se encuentra ese carcter en la lnea de texto como tambin
las palabras que contiene ese carcter.
9. Realizar un programa que lea una cadena e imprima en un rea de texto todas las
palabras que la tercera letra sea una b.
10. Hacer un programa que lea una serie de cadenas e imprima en un texto de rea todas
aquellas aparezca la palabra do.

Potrebbero piacerti anche