Separar cadenas en Java(Split)

   Muchas veces nos encontramos con la necesidad de utilizar un archivo externo para cargar ciertos valores, variables o simplemente leer datos fuera del programa o sistema. Una forma rápida y sencilla es combinar la lectura por lotes de un archivo directo con lo que se conoce como "Split".

   Ahora bien, un "split" es separar los valores por medio de un caracter o algún valor determinado, existen programas que hacen split de archivos, es decir, los dividen en varias partes y bien, eso es lo que precisamente haremos en esta ocasión, dividir una línea dentro del archivo en varios valores, ahora si, vamos con el ejemplo:

   Primero, necesitamos saber como se carga el archivo para su posterior lectura desde Java, para ello están estas dos entradas: Abrir un TextArea o Abrir un Archivo, cualquiera de las dos son válidas, para este ejemplo utilizaré una combinación de ambas. Ahora vamos con el archivo, para el ejemplo he utilizado un archivo de plano (de texto y sin extensión) llamado "carga_ejemplo", de esta forma me es mas fácil identificarlo, y en el he colocado lo siguiente:

PRUEBA:Carlitox en la Web:Java:Cualquier otra cosa:Los dos puntos separan todo:Fin de la prueba

   Como podemos ver cada oración esta separada por dos puntos, ese será nuestro valor para el split. No explicaré como se carga el archivo ya que eso está en la entrada anteriormente publicada, tenemos una variable del tipo "String" en forma de arreglo, esta es la que almacenará absolutamente todos los valores de la cadena haciendo el respectivo "split", la forma en que trabaja esta función es la siguiente:

cadena.split("delimitador");

   Donde cadena es la variable que contiene la cadena principal (los valores sin hacer split), y delimitador es el caracter con el que vamos a separar cada uno de esos valores en la cadena principal. Ya explicado esto vamos con el código, primero un ejemplo de como sería con un "for" para mostrar cada uno de los valores:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

public class split_cadena{
public static String linea;
 public static void main(String[] arg) throws IOException{
  System.out.println("Mostrando un Split...\n");
  System.out.println("By Carlitox (http://calitoxenlaweb.blogspot.com)");
  File file= new File("carga_ejemplo");
  BufferedReader reader=new BufferedReader(new FileReader(file));
  linea=reader.readLine();
  String[] arreglo_datos = linea.split(":");
  System.out.println("-----------------------------------------------");
  for (int i=0; i<arreglo_datos.length; i++){
 System.out.println(arreglo_datos[i]);
  }
  System.out.println("-----------------------------------------------");
 }
}

   Ahora, si modificamos un poco este ejemplo y creamos la interacción con el usuario, podemos crear una selección múltiple y mostrar la cadena según la opción que el usuario escoja, por ejemplo:
import java.util.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

public class split_cadena{
public static String linea, cont;
public static int opcion;
 public static void main(String[] arg) throws IOException{
  System.out.println("Mostrando un Split...\n");
  System.out.println("By Carlitox (http://calitoxenlaweb.blogspot.com)");
  File file= new File("carga_ejemplo");
  BufferedReader reader=new BufferedReader(new FileReader(file));
  linea=reader.readLine();
  String[] arreglo_datos = linea.split(":");
  try {
 Scanner leer = new Scanner(System.in);
    System.out.println("-----------------------------------------------");
    System.out.print("Seleccione una opcion 0-5: ");
    opcion=leer.nextInt();
    System.out.println("-----------------------------------------------");
    System.out.println("La opcion "+opcion+" contiene la cadena: "+arreglo_datos[opcion]);
    System.out.println("-----------------------------------------------");
    System.out.print("¿Desea continuar? (S/N)");
    cont =leer.next();
    if (cont.equalsIgnoreCase("s"))
      main(null);
    else
      System.exit(0);
  } catch (Exception e) {
    System.out.print("Opcion no valida: ");
    main(null);
  }
 }
}

   Y no solo eso, podemos crear miles de cosas a partir de un sencillo y práctico split, es solo cuestion de crear aplicaciones sencillas, útiles y prácticas


7 Comentarios

Escribir Comentario
Anónimo
AUTOR
4 de noviembre de 2012, 17:49 delete

Muchas gracias pero tengo una duda
Si es un archivo .txt en que las columnas estan separadas por tabulaciones, como sería??

Responder
avatar
4 de noviembre de 2012, 19:08 delete

Si las columnas están separadas por tabulaciones solo debes reemplazar el "punto y coma" por la expresión regular "\t", con eso bastaría, y para un txt solo escribe el nombre del archivo, no importa mientras sea texto plano, por ejemplo "carga_ejemplo.txt".... Saludos!!

Responder
avatar
Alex
AUTOR
17 de octubre de 2017, 17:40 delete

Hola eh estado utilizando el split pero quería saber cómo guardar datos en variables lo que está después de dos puntos por ejemplo
Simbolos: 0,1
Estado inicial: q1
Estado aceptación: q1,q2

Responder
avatar
Alex
AUTOR
17 de octubre de 2017, 17:44 delete

Hola mucho gusto una pregunta quería ver si me podrían ayudar estoy leyendo un txt pero necesito guardar los símbolos o caracteres después de una palabra que termina en dos puntos (:) por ejemplo
Símbolo: 0,1
Estados: q1,q2,q3
Estado inicial:q1
Gracias espero me ayuden

Responder
avatar
18 de octubre de 2017, 20:43 delete

Hola Alex, siguiendo este ejemplo supongamos que tienes la siguiente cadena en el archivo: "1:2:3:4"... Entonces lo que debes hacer en el "for" es almacenar en variable y concatenar:

for (int i=0; i<arreglo_datos.length; i++) {
System.out.print("q"+arreglo_datos[i]+",");
}

De esta forma el resultado es "q1:q2:q3:q4"... Saludos!

Responder
avatar
Unknown
AUTOR
5 de noviembre de 2017, 23:09 delete

Holaa necesito ayuda, me dejaron un programa donde guardo información en un archivo y como son tipo formulario de hecho es en jFrame pues acabando una persona tengo que delimitar así como lo muestras pero no sé precisamente donde ponerlo al final del código de guardar? es urgente me ayudarías mucho

Responder
avatar
7 de noviembre de 2017, 10:55 delete

Lo ideal es utilizar un metodo y desde la acción del botón llamarlo:
https://carlitoxenlaweb.blogspot.com/2010/10/ocultar-contenido.html

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión