Tengo la siguiente cadena que necesito dividir en espacio, comas y el siguiente carácter de línea. Cadena de muestra: "./homework2 3,phone3,desc3,brand4\n4,phone4,desc4,brand4\n5,phone5,desc5,brand5"

Estoy usando la función dividida como: .split("[,\\s+\\n+]"); pero no puedo obtener la salida requerida. El programa sigue leyendo brand4\n4 como una subcadena.

La ayuda sería apreciada.

0
Bilal 29 may. 2020 a las 19:11

5 respuestas

La mejor respuesta

Pruebe esto, debería funcionar de la manera que desee:

.split(" |,|\\n");

Esto divide la cadena en un espacio (""), una coma o un carácter de línea siguiente. Use el operador o para agregar más entradas si es necesario.

0
Sqepia 29 may. 2020 a las 20:46

Tu expresión regular es correcta; solo con un cambio menor. Intenta poner + fuera de la clase de rango.

[\s\n,]+

Explicación de la expresión regular anterior:

[\s\n,]+ : coincide con espacios en blanco, líneas nuevas y , una o más veces.

Demo de la expresión regular anterior.

Regular expression visualization

Demo de Debuggex

Puede encontrar la implementación de la expresión regular anterior en Java en aquí.

0
Mandy8055 29 may. 2020 a las 16:39

Consulte el siguiente enlace para validar la expresión regular

https://regex101.com/r/2ZkRBp/1/

0
Rajkumar 29 may. 2020 a las 16:30

Pruebe este código :

           String str = "./homework2 3,phone3,desc3,brand4\\n4,phone4,desc4,brand4\\n5,phone5,desc5,brand5";
           String[] arrOfStr = str.split("[\\s\\n,]+");

           for (String a : arrOfStr) 
                System.out.println(a); 

}
}

Fuera puesto:

./homework2
3
phone3
desc3
brand4\n4
phone4
desc4
brand4\n5
phone5
desc5
brand5

EDITAR:

Encontré esta función en el sitio: Enlace Aquí

           for (int i = 0 ; i < arrOfStr.length ; i++) { //YOUR LOOP !!!
               splitString(arrOfStr[i]); 
           }       
}

static void splitString(String str) 
{ 
    StringBuffer alpha = new StringBuffer(),  
    num = new StringBuffer(), special = new StringBuffer(); 

    for (int i=0; i<str.length(); i++) 
    { 
        if (Character.isDigit(str.charAt(i))) 
            num.append(str.charAt(i)); 
        else if(Character.isAlphabetic(str.charAt(i))) 
            alpha.append(str.charAt(i)); 
        else
            special.append(str.charAt(i)); 
    } 
    System.out.println(alpha); 
    System.out.println(num);    
} 
}

Combina las dos funciones y obtienes:

homework
2

3
phone
3
desc
3
brandn
44
phone
4
desc
4
brandn
45
phone
5
desc
5
brand
5

Puede almacenar los valores en otra matriz, o lo que elija.

1
Pluto 29 may. 2020 a las 17:11

En lugar de usar \ s + y \ n +, podría usar un cuantificador común. El siguiente muestra lo mismo

String s = "./homework2 3,phone3,desc3,brand4\n4,phone4,desc4,brand4\n5,phone5,desc5,brand5";
String[]s1 = s.split("[,\\s\\n]+");
for(String s2:s1) {
    System.out.println(s2);
}

Como conduce a

./homework2
3
phone3
desc3
brand4
4
phone4
desc4
brand4
5
phone5
desc5
brand5
1
Arun 29 may. 2020 a las 16:32