1. Longitud de cadena y funciones en Java
Escrito por sue smith | Traducido por beatriz sánchez
Algunas funciones de cadena en Java procesan el texto introducido por el usuario.
Thinkstock Images/Comstock/Getty Images
Las cadenas en Java permiten a los desarrolladores modelas secuencias de caracteres de
texto. La clase de cadena en Java proporciona métodos para procesar cadenas, incluyendo
funciones para devolver información sobre una cadena, como su longitud. Las cadenas son
uno de los tipos de datos más usados en los programas Java, así que aprender los conceptos
básicos de uso de cadenas es una actividad útil para la gente que aprende el desarrollo en
Java. La mayoría de las funciones de cadena son sencillas.
Otras personas están leyendo
Cómo calcular las vocales, los espacios y las consonantes de una cadena
dada en Java
Películas que debes ver antes de morir
Objetos de cadena
2. En Java, las cadenas son objetos. Esto quiere decir que puedes llamar a métodos en
variables y valores de cadena. La especificación del lenguaje Java para la clase de cadena
describe los métodos disponibles. Para crear un objeto de cadena e instanciarlo, dándole un
valor, usa la siguiente sintaxis de ejemplo: String someName = "James"; Para llamar a un
método en una variable de cadena, usa el siguiente código, llamando al método "trim":
String trimmedString = someName.trim(); Este código de ejemplo llama al método "trim",
que devuelve una copia de la cadena habiendo eliminado los espacios al principio y al final,
y almacenando el resultado en una nueva variable.
Caracteres
Las cadenas en Java son secuencias de caracteres de texto. La clase proporciona un rango
de funciones para acceder y manipular estos caracteres. Por ejemplo, el siguiente código de
ejemplo demuestra cómo mostrar el carácter de la primera posición en una variable de
cadena: System.out.println(someName.charAt(0)); El primer carácter de una cadena está en
la posición cero, ya que la cadena implementa su secuencia de caracteres como un vector.
Estos caracteres dentro de la cadena se pueden representar con un programa Java usando el
tipo de datos "char", de esta forma: char firstChar = someName.charAt(0); El tipo de datos
"char" es un tipo primitivo, como "int" y "double".
Longitud
Los programas Java acceden a la longitud de un objeto de cadena llamando a su método de
longitud. El método devuelve un valor entero que representa el número de caracteres dentro
de la cadena. El siguiente código de ejemplo muestra cómo saber la longitud de una cadena
y almacenar el resultado en una variable: int stringLength = someName.length(); Los
programas también pueden usar directamente el método de longitud, como en la siguiente
estructura de ejemplo, iterando en la cadena para escribir cada carácter por turnos: for(int
i=0; i<someName.length(); i++){ System.out.println(someName.charAt(i)); } Los
programas usan el método de longitud de la clase de cadena por muchas razones, por
ejemplo, para determinar si una variable de cadena es demasiado larga para almacenarla o
mostrarla en un contexto con recursos limitados.
Métodos
La clase de cadena proporciona varias funciones adicionales, que programan el acceso a
través de llamadas a métodos. El método "indexOf" devuelve un entero que indica la
primera aparición de una secuencia de caracteres dentro de una cadena de la siguiente
forma: String letters = "abcde"; int letterIndex = letters.indexOf("b");//will contain 1 El
método "equals" de una clase de cadena devuelve un valor booleano de cierto o falso que
indica si un valor de cadena es igual a otro. Los métodos que devuelven partes manipuladas
de cadenas incluyen el método "split", que devuelve un vector de cadena con partes
definidas de una cadena original almacenada en cada posición. El método "substring"
devuelve un trozo de una cadena como indican las posiciones de inicio y fin requeridas,
3. como en este ejemplo: String someWords = "A series of words";
System.out.println(someWords.substring(0,8));//"A series
4. Validación de JTextField: TextField numérico, binario o solo letras
Por Fabrizzio · 23 junio, 2012 (39892 vistas)
Compartir:
¿Alguna vez han querido validar alguna entrada de datos de algún campo? Por ejemplo, ¿validar
que lo que el usuario escribe sea solo números o solo letras? Pues conociendo las propiedades
adecuadas de los elementos podemos lograr esto muy fácilmente.
Trabajaremos en Java con NetBeans como IDE.
Por ejemplo si queremos que en un campo (JTextField) sólo se ingresen números, tendríamos que
editar el evento KeyTyped del JTextfield. Para esto, damos click derecho sobre el componente y
seleccionamos Events->Key->KeyTyped tal como se muestra en la imagen:
Dentro de la función de dicho evento, colocamos lo siguiente:
char car = evt.getKeyChar();
if((car<'0' || car>'9')) evt.consume();
Se verá asi:
Cada vez que el usuario presione una tecla, se generará este evento y lo que hacemos es sacar el
caracter que presiono el usuario que se almacena en la variable evt. Luego, en un simple if
decimos: si el caracter no esta entre 0 y 9 lo desechamos (consumimos). Y de esta manera
logramos que el JTextField acepte sólo números.
También podemos agregar otro tipo de validación en este mismo evento como limitar la cantidad
de caracteres que se pueden escribir, esto se logra agregando un if que verifica la cantidad de
5. caracteres en el JTextField. Por ejemplo, para los números telefónicos de El Salvador que sólo
tienen 8 caracteres los podríamos validar de la siguiente forma:
char car = evt.getKeyChar();
if(txtNumerico.getText().length()>=8) evt.consume();
if((car<'0' || car>'9')) evt.consume();
De igual manera, podríamos validar que solo se puedan digitar números binarios agregando el
siguiente código a la función del evento:
char car = evt.getKeyChar();
if(car!='0' && car!='1') evt.consume();
De manera similar, si solo quisieramos letras tendríamos que poner:
char car = evt.getKeyChar();
if((car<'a' || car>'z') && (car<'A' || car>'Z')) evt.consume();
Pueden descargar el siguiente proyecto ejemplo en NetBeans: ValidacionTextField
Actualización 01
por hug0
- Como permitir la barra espaciadora dentro de la caja de texto:
char car = evt.getKeyChar();
if((car<'a' || car>'z') && (car<'A' || car>'Z')
6. && (car!=(char)KeyEvent.VK_SPACE))
{
evt.consume();
}
Con KeyEvent.VK_SPACE se captura la tecla espaciadora
- Como permitir vocales con tilde en la caja de texto:
char car = evt.getKeyChar();
if((car<'a' || car>'z') && (car<'A' || car>'Z')
&& car !='á' //Minúsculas
&& car !='é'
&& car !='í'
&& car !='ó'
&& car !='ú'
&& car !='Á' //Mayúsculas
&& car !='É'
&& car !='Í'
&& car !='Ó'
&& car !='Ú'
&& (car!=(char)KeyEvent.VK_SPACE))
{
evt.consume();
}
7. La Clase String
La clase String representa una cadena de caracteres. Todos
los literales de la cadena tales como “abc” son
implementados como instancias de ésta clase.
La clase String incluye métodos que permiten examinar los
caracteres individuales de una cadena para compararlos,
ubicarlos extraerlos como sub cadenas y para crear copias
de una cadena convirtiendo todos sus caracteres a
mayúsculas o minúsculas.
Java provee un soporte especial para la concatenación (unión) de cadenas con el
operador (+). y para convertir otros objetos a cadenas.La concatenación de
cadenas es implementada a través de la clase StringBuffer y su método append().
Las conversiones son implementadas a través del método toString() definido en la
clase Object la cual es heredada por todas las clases en Java.
I.- PARA TENER EN CUENTA :
1. La clase String pertenece al paquete java.lang.
2. Existen diferentes formas para crear objetos String como las siguientes :
o String str =”abc”;
o char str[] = {‘a’,’b’,’c’}; //arreglo de caracteres
o String str = new String (“abc”) ; //objeto con valor inicial “abc”
3. El lenguaje java proporciona el operador “+” para concatenar (unir) objetos
String.
4.
Un objeto String representa una cadena de caracteres no modificable;por lo
tanto, una operación como convertir a mayúsculas o minúsculas no
modificará el objeto original sino que devolverá un nuevo objeto con
la cadena resultante de esa operación el cual deberá ser guardado en
otro objeto string.
II.- JERARQUÍA DE CLASES
III.- MÉTODOS MAS IMPORTANTES
8. 1. String (String valor) .- Se usa cuando se desea crear una cadena de
caracteres :
o String cadena = “Hola”
o String cadena = new String (“Hola”); //Constructor de la clase String
2.
cadena.concat(string txt) .- Devuelve como resultado un nuevo objeto
String resultado de concatenar dos cadena :
?
1
2
String cadena = “Hola”
String result= cadena.concat(" Mundo");//El resultado será Hola
mundo
3.
cadena.compareTo(String otra cadena) .- Compara lexicográficamente la
cadena con otra cadena , esta comparación es caracter por
caracter teniendo en cuenta que las mayúsculas son mayores que las
minúsculas – esto es de acuerdo al código ASCII o UNICODE – según esto
devuelve :
o < 0 : si cadena < otra cadena
o = 0 : si cadena = otra cadena
o > 0 : si cadena > otra cadena
Ejemplo :
o JUAN > juan
o Juan > Carlos
o JUAN > JUAn
o abcde > abcdefg
4. cadena.toIgnoreCase(String otra cadena) .- Hace lo mismo que
compareTo pero con la única diferencia que no se hace diferencia entre
mayúsculas y minúsculas ; es decir : JUAN = juan
5. cadena.length() .- Devuelve la longitud o número de caracteres de la
cadena :
9. String cad="Hola Mundo";
int cant = cad.length();// El valor de cant será 10
6. cadena.toLowerCase() .- Convierte a minúsculas las letras mayúsculas de
la cadena
7. cadena.toUpperCase().- Convierte en mayúsculas las letras minúsculas de
la cadena.
?
1
2
String cad1="Esto Es Una Prueba";
String cad2=cad1.toUpperCase();//cad2 será igual a : ESTO ES UNA
PRUEBA.
8. cadena.trim () .- Elimina los espacios en blanco que puedan haber al
principio o al final de la cadena.
?
1
2
String cad1=" Esto Es Una Prueba ";
String cad2=cad1.toLowerCase();//cad2=Esto Es Una Prueba.
IV.- MÉTODOS
CONSTRUCTORES
Constructor Descripción
String( ) Crea un nuevo objeto String vacío sin caracteres.
String (byte[ ] bytes)
Crea un nuevo objeto String inicializado con los
caracteres equivalentes a cada número guardado
en el arreglo de bytes.
String (char[ ] value)
Crea un nuevo objeto String inicializado con los
caracteres contenidos en el arreglo dado como
parámetro.
String (String cadena)
Crea un nuevo objeto String inicializado con el
valor dado como parámetro.
MÉTODOS
Tipo de
retorno
Método Descripción
char charAt(int index)
Retorna el carácter correspondiente al índice
dado como parámetro.
int compareTo(String Retorna como entero el resultado de la
10. otraCadena) comparación entre la cadena que lo llama con
otraCadena. Si el parámetro devuelto es "0"
significa que las dos cadenas son iguales;
realizándose la comparación carácter con
carácter diferenciándose las mayúsculas con las
minúsculas.
int
compareToIgnoreCase(String
otraCadena)
Retorna como entero el resultado de la
comparación de la cadena que lo llama con
otraCadena. Si éste entero es 0 significa que
ambas cadenas son iguales; siendo la
comparación carácter con carácter pero
ignorando la diferencias entre mayúsculas y
minúsculas.
String concat(String otraCadena)
Retorna el resultado de la concatenación de la
cadena con otraCadena dada como parámetro.
booleanequals(Object otroObjeto )
Retorna true si la cadena que lo llama es igual al
objeto enviado como parámetro.
boolean
equalsignoreCase(String
otraCadena)
Retorna true si la cadena que lo llama es igual a
la cadena dad como parámetro ignorando las
diferencias entre mayúsculas y minúsculas.
int indexOf (String cad)
Retorna la posición de la primera ocurrencia
encontrada de la cadena dada como parámetro
dentro de la cadena que llama al método.
int indexOf (String cad, int ini)
Retorna la posición de la primera ocurrencia
encontrada de la cadena dada como parámetro
pero comenzando la búsqueda desde la posición
ini dada como parámetro.
int lastIndexOf (String cad)
Retorna la posición de la ultima ocurrencia de la
cadena dada como parámetro.
int lastIndexOf (String cad,int ini)
Retorna la posición de la última ocurrencia de la
cadena dada como parámetro buscando en
retroceso a partir de la posición dada como
parámetro.
int length ( )
Retorna el número de caracteres que contiene la
cadena.
String replace (char car1,char car2)
Retorna una nueva cadena como resultado de
reemplazar todas las ocurrencias del carácter
"car1" por el carácter "car2" dados como
parámetros.
String
replaceAll (String cad1,String
cad2)
Retorna una nueva cadena como resultado de
reemplazar todas las concurrencias de la sub
cadena cad1 por la sub cadena cad2 dada como
parámetro.
booleanstartsWith (String cad)
Retorna true si la cadena que llama al método
empieza con la subcadena cad dada como
11. parámetro.
String subString(int posIni)
Retorna una subcadena cuyo primer carácter
empieza en la posición posIni dada como
parámetro.
String
subString(int posIni,int
posFin)
Retorna una subcadena cuyo primer carácter
empieza en la posición posIni y termina con el
carácter de la posición posFin.
String toLowerCase( )
Retorna una nueva cadena como resultado de
convertir todos los caracteres a minúsculas.
String toUpperCase ( )
Retorna una nueva cadena como resultado de
convertir todos los caracteres a mayúsculas.
String trim ( )
Retorna una nueva cadena como resultado de
omitir los espacios en blanco al inicio y al final de
la cadena.
V.- EJEMPLOS
1.
Diseñe una aplicación que permita manipular los caracteres de una
subcadena a través de los métodos vistos.
o
Creamos un nuevo proyecto al cual
colocaremos en un paquete; en este nuevo
paquete vamos a agregar un JFrame al cual
le daremos el tipo de distribución GridLayout
con 2 columnas ; hecho esto en la primera
columna colocamos un JPanel (jPanel1) y le
damos una distribución de BorderLayout ( en
este panel colocamos en el NORTE una caja
de texto , en el CENTRO un ScrollPane y
12. encima un txtArea …por último en el SUR colocamos una etiqueta) ;
en la segunda columna colocamos otro JPanel (JPanel2) con
distribución GridLayout on 2 columnas y 7 filas y simplemente
arrastramos botones hacia este panel y veremos que se irán
ordenando como se ve en la imagen anterior. Se les recuerda que
visiten esta entrada para tener mas información sobre los tipos de
distribución y esta entrada para ver como crear un proyecto con
NetBeans. Bien , hecho todo esto la vista de objetos se verá de esta
forma (Observar la forma de como se esta distribuido)
o
Ahora vamos a programar cada botón , para esto solo basta con
darle doble clic y enseguida NetBeans nos llevará al método
correspondiente :
Vamos a programar el botón longitud el cual nos dirá la
cantidad de caracteres de la cadena que ingresaremos en el
textArea ; para poder obtener el valor escrito en la caja de
texto usaremos el método getText y para escribir el resultado
en el área de texto usaremos el método setText.
?
1
2
3
4
5
6
7
8
9
10
private void
btnLongitudActionPerformed(java.awt.event.ActionEvent
evt) {
// lee el mensaje
String cadena=txtMensaje.getText();
// obtiene la longitud
int longi = cadena.length();
// imprime longitud
txtSalida.setText("El texto ingresado tiene:
"+longi+" caracteres.");
}
13.
Regresamos al diseñador y le hacemos doble clic al botón
Separar Palabras y ingresamos el siguiente código :
?
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
private void
btnSeparaPalabrasActionPerformed(java.awt.event.Actio
nEvent evt) {
// lee el mensaje
String cadena=txtMensaje.getText();
// obtiene la longitud
int longi = cadena.length();
// limpia area
txtSalida.setText("");
// inicializa contador de palabras
int contpala=0;
// separa palabras por el espacio en blanco
do {
// no considera espacios al inicio ni al final
cadena=cadena.trim();
// ubica posicion del primer caracter blanco
int pos=cadena.indexOf(' ');
// obtiene palabra encontrada
String palabra="";
if (pos>0)
palabra=cadena.substring(0,pos+1);
else
palabra=cadena;
// imprime palabra encontrada
txtSalida.append(palabra+"n");
// ignora palabra encontrada
cadena=cadena.substring(palabra.length());
// actualiza contador de palabras
contpala++;
} while(cadena.length()>0);
// imprime contador de palabras
txtSalida.append("n"+contpala+" palabras
encontradas.");
}
14. 4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
Hacemos lo mismo con el botón de mayúsculas
?
1
2
3
4
5
6
7
8
9
private void
btnMayusculasActionPerformed(java.awt.event.ActionEven
t evt) {
// TODO add your handling code here:
// lee el mensaje
String cadena=txtMensaje.getText();
// lo convierte a mayúsculas
cadena = cadena.toUpperCase();
// imprime nueva cadena en mayusculas
txtSalida.setText("Texto convertido a
mayúsculas:n"+cadena);
}
Y con el botón de minúsculas :
?
1
2
3
4
private void
btnMinusculasActionPerformed(java.awt.event.ActionEven
t evt) {
// lee el mensaje
String cadena=txtMensaje.getText();
15. 5
6
7
8
// lo convierte a minúsculas
cadena = cadena.toLowerCase();
// imprime nueva cadena en minusculas
txtSalida.setText("Texto convertido a
minúsculas:n"+cadena);
}
Lo propio con el botón de caracteres y los demás botones (
que por motivo de tiempo y espacio no se van a colocar pero
lo pueden descargar pulsando el botón descargar )
o Por ultimo ejecutamos con F6