/ / Use String.split () con múltiples delimitadores - java, regex

Utilice String.split () con múltiples delimitadores - java, regex

Necesito dividir una base de cadena en delimitador - y .. A continuación se muestran mi salida deseada.

AA.BB-CC-DD.zip ->

AA
BB
CC
DD
zip

pero mi siguiente código no funciona.

private void getId(String pdfName){
String[]tokens = pdfName.split("-\.");
}

Respuestas

253 para la respuesta № 1

Creo que necesitas incluir el operador de expresiones regulares O:

String[]tokens = pdfName.split("-|\.");

Lo que tengas coincidirá con "-." No un "-" o una "."


43 para la respuesta № 2

Prueba este regex "[-.]+". El + después trata los caracteres delimitadores consecutivos como uno solo. Eliminar más si no quieres esto.


23 para la respuesta № 3

Puede usar la expresión regular "W". Esto coincide con cualquier carácter que no sea de palabra. La línea requerida sería:

String[] tokens=pdfName.split("\W");

11 para la respuesta № 4

Utilizando Guayaba usted podría hacer esto:

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);

10 para la respuesta № 5

La cadena que das split es la forma de cadena de una expresión regular, por lo que:

private void getId(String pdfName){
String[]tokens = pdfName.split("[\-.]");
}

Eso significa dividir en cualquier personaje en el [] (tenemos que escapar - con una barra invertida porque es especial por dentro []; y por supuesto tenemos que escapar de la barra invertida porque esto es una cadena). (A la inversa, . normalmente es especial pero no es especial por dentro [].)


3 para la respuesta № 6

Yo usaría Apache Commons:

importar org.apache.commons.lang3.StringUtils;

private void getId(String pdfName){
String[] tokens = StringUtils.split(pdfName, "-.");
}

Se dividirá en cualquiera de los separadores especificados, a diferencia de StringUtils.splitByWholeSeparator(str, separator) que utiliza la cadena completa como separador


2 para la respuesta № 7

Para dos secuencias de caracteres como delimitadores "AND" y "OR", se debe trabajar. No te olvides de recortar durante el uso.

 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
String[] cities = text.split("AND|OR");

Resultado: cities = {"ISTANBUL", "NEW YORK", "PARIS", "TOKYO", "MOSCOW"}


0 para la respuesta № 8

También puede especificar una expresión regular como argumento en el método split () ... vea el siguiente ejemplo ...

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\.");
}

0 para la respuesta № 9

Es mejor usar algo como esto:

s.split("[\s\-\.\"\?\,\_\@]+");

Han añadido algunos otros personajes como muestra. Esta es la forma más segura de usar, porque la forma . y " se trata


0 para la respuesta № 10
s.trim().split("[\W]+")

Deberia trabajar.


-1 para la respuesta № 11

Si sabe que la picadura estará siempre en el mismo formato, primero divida la cadena basándose en . y almacenar la cadena en el primer índice en una variable. Luego divide la cadena en el segundo índice basado en - y almacene los índices 0, 1 y 2. Finalmente, divida el índice 2 de la matriz anterior en función de . y deberías haber obtenido todos los campos relevantes.

Consulte el siguiente fragmento de código:

String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...