package es.snippetea;
import java.util.ArrayList;
/**
* Ejemplos de funcionamiento del split de Strings y adición de
* un par de metodos de utilidad.
* @author icendrero
*/
public class EjemploSplits {
public static void main(String[] args) {
System.out.println("-------------------------------");
String textoParaSplit = "";
String delimitador = "";
/*
* Separador '.', el cual no separa nada porque en expresiones
* regulares, significa cualquier caracter.
*/
textoParaSplit = "a.b.c.d.e";
delimitador = ".";
delimitame(textoParaSplit,delimitador);
/*
* Si se quiere separar por ., hay que fugarlo con '\.'
*/
textoParaSplit = "a.b.c.d.e";
delimitador = "\\.";
delimitame(textoParaSplit,delimitador);
//El delimitador ahora será cualquier letra de la 'a' a la 'z'
textoParaSplit = "a.b.c.d.e";
delimitador = "[a-z]";
delimitame(textoParaSplit,delimitador);
//El delimitador ahora será cualquier letra de la 'A' a la 'z'
textoParaSplit = "a.b.c.d.e";
delimitador = "[A-z]";
delimitame(textoParaSplit,delimitador);
/*
* El delimitador ahora será cualquier letra de la 'A'
* a la 'Z' -> No lo encuentra porque no hay.
*/
textoParaSplit = "a.b.c.d.e";
delimitador = "[A-Z]";
delimitame(textoParaSplit,delimitador);
/*
* El delimitador ahora será cualquier letra de la 'b'
* a la 'c' -> Separa por b o por c
*/
textoParaSplit = "a.b.c.d.e";
delimitador = "[b-c]";
delimitame(textoParaSplit,delimitador);
/*
* El delimitador ahora será cualquier letra de la 'b'
* a la 'c' -> Separa por b o por c
*/
textoParaSplit = "a\\b\\c\\d\\e";
delimitador = "\\\\";
delimitame(textoParaSplit,delimitador);
/*
* El delimitador ahora será cualquier letra de la 'b'
* a la 'c' -> Separa por b o por c
*/
textoParaSplit = "Primero una pAlabra, luego oTr-a";
delimitador = "[a-z]";
delimitame(textoParaSplit,delimitador);
/*
* El delimitador ahora será cualquier letra de la 'a'
* a la 'z' sin tener en cuenta los espacios en blanco ni
* los nulos.
*/
textoParaSplit = "Primero una pAlabra{ luego oTr-a";
delimitador = "[a-z]";
delimitameLimpio(textoParaSplit,delimitador);
}
/**
* Metodo para mostrar el delimitador de la clase String
* @param texto texto a delimitar
* @param delimitador caracter por el cual delimitar
*/
public static void delimitame(String texto, String delimitador){
String[] textoSeparado;
System.out.println("Texto a separar: "+texto);
System.out.println("Separar por: "+delimitador);
System.out.println("Texto separado:");
textoSeparado = texto.split(delimitador);
System.out.println("\t"+printArray(textoSeparado));
System.out.println("-------------------------------");
}
/**
* Metodo para mostrar el delimitador limpio el cual
* te devuelve un array de String[] sin espacios en blanco
* @param texto texto a delimitar
* @param delimitador caracter por el cual delimitar
*/
public static void delimitameLimpio(String texto, String delimitador){
String[] textoSeparado;
System.out.println("Texto a separar: "+texto);
System.out.println("Separar por: "+delimitador);
System.out.println("Texto separado en limpio(sin espacios en blanco):");
textoSeparado = splitterNoEmptySpaces(texto,delimitador);
System.out.println("\t"+printArray(textoSeparado));
System.out.println("-------------------------------");
}
/**
* Devuelve un String formateado para imprimir arrays
*
* @param array Array a imprimir
* @return String formateado
*/
public static String printArray(String[] array){
StringBuffer append = new StringBuffer("[");
if(array.length!=0){
for (int i = 0; i < array.length; i++) {
if (i != array.length - 1) {
append.append(array[i] + ", ");
} else {
append.append(array[i] + "]");
}
}
}else{
append.append("]" );
}
return append.toString();
}
/**
*
* Realiza la misma función que el Split de la clase String
* pero no devuelve espacios en blanco ni caracteres nulos.
*
* @param text texto a separar
* @param delimiter caracter de separacion
* @return Array de Strings con la separación
*/
public static String[] splitterNoEmptySpaces(String text,String delimiter){
//Variables
ArrayList result = new ArrayList();
String[] temp = text.split(delimiter);
//Rellenamos el arraylist
for (int i = 0; i < temp.length; i++)
if(!isNullOrWhitespace(temp[i]))
result.add(temp[i]);
//Lo pasamos a String[] para que sea similar al split original.
temp = new String[result.size()];
for (int i = 0; i < temp.length; i++)temp[i] = result.get(i);
return temp;
}
/**
* Metodo que nos ahorra escribir "".equals(text)||null==text en cada if
* @param text texto a comprobar
* @return true si es nulo o un espacio en blanco o vacío
*/
public static boolean isNullOrWhitespace(String text){
if("".equals(text.trim())||null==text)return true;
return false;
}
}
El resultado que se obtiene tras la ejecución de EjemploSplits es:
------------------------------
Texto a separar: a.b.c.d.e
Separar por: .
Texto separado:
[]
-------------------------------
Texto a separar: a.b.c.d.e
Separar por: \.
Texto separado:
[a, b, c, d, e]
-------------------------------
Texto a separar: a.b.c.d.e
Separar por: [a-z]
Texto separado:
[, ., ., ., .]
-------------------------------
Texto a separar: a.b.c.d.e
Separar por: [A-z]
Texto separado:
[, ., ., ., .]
-------------------------------
Texto a separar: a.b.c.d.e
Separar por: [A-Z]
Texto separado:
[a.b.c.d.e]
-------------------------------
Texto a separar: a.b.c.d.e
Separar por: [b-c]
Texto separado:
[a., ., .d.e]
-------------------------------
Texto a separar: a\b\c\d\e
Separar por: \\
Texto separado:
[a, b, c, d, e]
-------------------------------
Texto a separar: Primero una pAlabra, luego oTr-a
Separar por: [a-z]
Texto separado:
[P, , , , , , , , , , A, , , , , , , , , , , , T, -]
-------------------------------
Texto a separar: Primero una pAlabra{ luego oTr-a
Separar por: [a-z]
Texto separado en limpio(sin espacios en blanco):
[P, A, { , T, -]
-------------------------------
No hay comentarios:
Publicar un comentario