lunes, 23 de noviembre de 2015

Split inverso en Java

Muchos conocemos la función de Split en Java. Split separa una cadena de texto de acuerdo a un delimitador y pone el resultado de esa separación en un arreglo de elementos.

Es decir, si tenemos una cadena como la siguiente:

String cadena = "uno,dos,tres,cuatro,cinco";

Y utilizamos la función split de la siguiente forma:
String cadena = "uno, dos, tres, cuatro, cinco";
String arreglo[] = cadena.split(",");

La variable arreglo[] contendrá los elementos resultado de la división de la cadena mediante el delimitador ",". Esto significa que el arreglo contendrá lo siguiente:
arreglo[0] = "uno"
arreglo[1] = "dos"
arreglo[2] = "tres"
arreglo[3] = "cuatro"
arreglo[4] = "cinco"

Pero en ocasiones tal vez necesitemos llevar a cabo la acción inversa de split; esto es: dado un arreglo de elementos, obtener un cadena con esos elementos, divididos por un delimitador. Teniendo el arreglo anterior, el split inverso nos devolvería una cadena como la siguiente:
cadena = "uno,dos,tres,cuatro,cinco";

Para hacer esta acción inversa tenemos que usar la librería java.util.Arrays; aquí un ejemplo:
import java.util.Arrays;

public class clsReverseSplit {
    public clsReverseSplit() {
    }
    
    public String reverseSplit(String gArreglo[], String delimiter){
        return Arrays.toString(gArreglo).replace(", ", delimiter).replaceAll("[\\[\\]]", "");
    }
    
    public static void main(String args[]){
        clsReverseSplit objeto = new clsReverseSplit();
        String arreglo[] = {"Uno", "Dos", "Tres", "Cuatro", "Cinco"};
        
        /* Imprimimos los elementos del arreglo */
        System.out.println("Elementos: ");
        for(String elemento:arreglo)
            System.out.println(elemento);
            
        /* Obtenemos los valores del arreglo separados por coma */
        System.out.println("Split inverso (separado por comas): ");
        System.out.println(objeto.reverseSplit(arreglo, ","));
        
        /* Obtenemos los valores del arreglo separados por punto y coma */
        System.out.println("Split inverso (separado por punto y coma): ");
        System.out.println(objeto.reverseSplit(arreglo, ";"));
        
        /* Obtenemos los valores del arreglo separados por tabulador */
        System.out.println("Split inverso (separado por tabulador): ");
        System.out.println(objeto.reverseSplit(arreglo, "\t"));
        
        String ac = "uno,dos";
        String arre[] = ac.split(",");
        for(String elemento:arre)
            System.out.println(elemento);
    }
}

Espero pueda ser de utilidad como lo fue para mí. A continuación comparto el archivo de ejemplo: