Blog y foros sobre Java en español. ¡¡No dudes en preguntar!!

Manejo de cadenas en Java. Métodos split, indexOf, substring y trim

Muchas veces nos es necesario tratar cadenas de texto, pero la mayoría de esas veces no utilizamos la cadena entera, sino que necesitamos extraer subcadenas que contienen datos relevantes.

Java tiene varios métodos para el manejo de cadenas. Los que vamos a tratar son los siguientes:

  • String[]     split(String regex)
  • int     indexOf(int ch)
  • int     indexOf(int ch, int fromIndex)
  • String     substring(int beginIndex)
  • String     substring(int beginIndex, int endIndex)
  • String     trim()

El método split devuelve un array de String. Es muy útil cuando tenemos un conjunto de elementos separados por comas. Por ejemplo:

String colores = "rojo,amarillo,verde,azul,morado,marrón";
String[] arrayColores = colores.split(",");
 
// En este momento tenemos un array en el que cada elemento es un color.
for (int i = 0; i < arrayColores.length; i++) {
	System.out.println(arrayColores[i]);
}

La salida será:
    rojo
    amarillo
    verde
    azul
    morado
    marrón

El método indexOf devuelve la primera aparición de una cadena dentro de un String. Si le pasamos dos parámetros el primero será la cadena a buscar y el segundo la posición en la que empezará a buscar.
El método substring devolverá una subcadena del String, desde la posición de inicio hasta la posición de fin. Si sólo se especifica un parámetro la subcadena contendrá desde la posición de inicio hasta el final de la cadena. Se ve más claro en el siguiente ejemplo:

String colores = "rojo,amarillo,verde,azul,morado,marrón";
 
int inicio = colores.indexOf(",");
int fin = colores.indexOf(",", inicio + 1);
 
System.out.println(colores.substring(inicio + 1, fin));
System.out.println(colores.substring(inicio + 1));

La salida será:
    amarillo
    amarillo,verde,azul,morado,marrón

Por último, el método trim devuelve una copia de la cadena, pero sin los espacios al inicio o al fin. Es bastante útil en el uso de formularios y en otras muchas ocasiones. Os dejo la prueba para vosotros.

Espero que os haya sido de ayuda.

Por favor, para consultas sobre estos métodos, abrir un tema en los foros de Java-Spain

Wifi Reminder para Android - Recupera la contraseña de tu red

Wifi Reminder¿Aún no has probado Wifi Reminder?

Wifi Reminder te permite recuperar la contraseña de tu red Wifi si la olvidas. Actualmente funciona con las redes WLAN_XXXX y JAZZTEL_XXXX, de Movistar y Jazztel. Estas redes aparecerán en el listado con fondo verde.

Actualmente no funciona con las redes WLAN_XX.

Wifi Reminder está diseñada para recuperar tus propias contraseñas. El autor de Wifi Reminder no se hace responsable del mal uso que se le pueda dar a la herramienta.

Para sugerencias y errores: http://code.java-spain.com/wifi-reminder/issues o mediante correo electrónico.

Actualización: Google ha retirado Wifi Reminder del Android Market. Aquí dejo un enlace a la descarga:

Descargar Wifi Reminder

El FBI cierra Megaupload

Como noticia de última hora, y precisamente el día después de la "huelga" digital en protesta contra la ley SOPA, el FBI ha cerrado el sitio de descargas Megaupload.com donde precisamente Java-Spain almacena archivos como el programa Wifi Reminder, lo cual no supone ninguna ilegalidad, "ni aquí ni en la China" como se suele decir, aunque en este caso no estaría muy claro. ;-)
 
Esperemos que esto sea algo temporal puesto que en caso contrario supone una clara amenaza contra la libertad digital y la neutralidad de la red.
 
Podéis seguir las últimas noticias en Twitter (#Megaupload)

Dropbox - 2GB de almacenamiento gratuito online

Dropbox es un servicio freemium, de almacenamiento online de archivos. Pero no es sólo eso, sino que además incluye un software que sincroniza automáticamente  cualquier carpeta que elijamos.

Pero no es sólo eso, sino que además permite compartir cualquier archivo con nuestros amigos/compañeros de trabajo sin necesidad de que ellos tengan una cuenta (que deberían conseguir), con tan sólo arrastrar un archivo a la carpeta pública y obtener el vínculo directo a dicho archivo.

logo dropbox

Y cambiando de frasecita, también incluye una función de carpetas compartidas, que podremos utilizar con cualquier usuario que esté registrado, de manera que se puede utilizar como bandeja común de documentos del grupo de trabajo, o como repositorio de archivos.

Podemos incluso utilizarlo como un CVS o SVN casero, sólo con arrastrar la carpeta de nuestro proyecto de Eclipse/Netbeans a Dropbox.

Os podéis registrar gratis y obtener 2GB de almacenamiento online en el siguiente link: http://db.tt/c1jGAebR

Obtener un número desde una cadena de texto

Tagged:  

En esta corta y sencilla entrada vamos a tratar un problema de los más comunes que se pueden presentar al programar en Java: ¿cómo puedo transformar un texto en un tipo int o long?

Pues es tan fácil como esto:

int i = 0;
long l = 0;
 
String s = "100000";
 
try {
 
    // Convertimos s en un entero
    i = Integer.parseInt(s);
 
    // Convertimos s en un long
    l = Long.parseLong(s);
 
} catch(NumberFormatException nfe) {
 
    System.err.println("La cadena " + s + " no es un número válido");
    nfe.printStackTrace();
 
}

Manejo de cadenas en Java - Metodo compareTo

Continuando con las anteriores entregas de Manejo de cadenas en Java, hoy vamos a comentar un método que es muy útil para ordenar listados de palabras.

Como su nombre indica, el método compareTo(String str) realiza una comparación entre un String (en este caso) y otro objeto de tipo String.

Lo que realmente hace este método, es observar una cadena con respecto a otra y devolverá un número entero int. Este número determinará cuál de las dos cadenas va antes o después. El entero valdrá menos que 0 si la cadena argumento es lexicográficamente mayor que la cadena a comparar, 0 si son iguales y será mayor que 0 si es menor. Por ejemplo:

public class StringTest {
    public static void main(String[] args) {
        String s = "a";
        String s2 = "b";
 
        System.out.println(s.compareTo(s2)); // -1
        System.out.println(s2.compareTo(s)); // 1
 
        s2 = "aa";
 
        System.out.println(s.compareTo(s2)); // -1
        System.out.println(s2.compareTo(s)); // 1
 
        s2 = "c";
 
        System.out.println(s.compareTo(s2)); // -2
        System.out.println(s2.compareTo(s)); // 2
    }
}

Java cumple 15 años

Tagged:  

El lenguaje de programación Java nació hace 15 años, según su creador, James Gosling, Desde Java-Spain queremos agradecerle su creación, ya que sin ella no sería posible este blog ni muchos otros.

Cambio de look de Java-Spain.com

Tagged:  

Me complace anunciar que Java-Spain, para celebrar su primer año online va a actualizar en breve su imagen para estar más acorde con los diseños actuales. Espero que os guste.

¿Qué funciones o mejoras echas de menos en Java-Spain? Se admiten sugerencias en los comentarios

Utilización básica de arrays, ArrayList y Vector. Conversión de arrays.

Hoy el tema que nos ocupa es uno sencillo, pero que no debe pasarse por alto, por ser estas clases unas de las más usadas, dado su sencillo funcionamiento.

En primer lugar, vamos a inicializar un array de String, que como sabéis tiene longitud fija, lo que es un pequeño inconveniente a la hora de trabajar con algunos conjuntos de elementos. Para solucionar este problema, tenemos otras clases llamadas colecciones.

Dos de ellas son ArrayList y Vector. Un ArrayList es una implementación de la clase List, que es una colección que admite elementos duplicados y nulos, así como acceso por índice y otros métodos para trabajar con sus elementos. Vector también hereda de List es muy similar a ArrayList, con la diferencia de que la clase Vector es segura para trabajar con hilos (sincronizada). Esta ventaja penaliza ligeramente el rendimiento del Vector.

Antes de mostrar un ejemplo, añadir que a partir de la versión 1.6 1.5 de Java, si no me equivoco (me equivoqué :P), se introdujeron las colecciones genéricas, que suponen una ventaja en cuanto a que soportan comprobación de tipos en tiempo de compilación. Para definir el tipo de la colección simplemente se añade el tipo del objeto entre los símbolos '<' y '>' (ej.: Vector<String>).

A continuación, un sencillo ejemplo de uso de estas clases.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
 
public class Test1 {
 
    public static void main(String[] args) {
 
        String[] arrayString = new String[]{"1", "2", "3", "4"};
        for (int i = 0; i < arrayString.length; i++) {
            System.out.println(arrayString[i]);
        }
 
        ArrayList<String> arrayList = new ArrayList<String>(arrayString.length);
        for (int i = 0; i < arrayString.length; i++) {
            arrayList.add(arrayString[i]);
        }
 
        Iterator it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
 
        Vector<String> vector = new Vector<String>(arrayString.length);
        for (int i = 0; i < arrayString.length; i++) {
            vector.add(arrayString[i]);
        }
 
        it = vector.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

Distribuir contenido