Utilice String.split () con múltiples delimitadores

Necesito dividir una cadena base en el delimitador - y . . Debajo están mi resultado deseado.

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("-\\."); } 

Creo que debes incluir el operador OR regex:

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

Lo que tienes coincidirá “-“. no un “-” o un “.”

Prueba esta expresión regular "[-.]+" . El + después trata los caracteres de delimitación consecutivos como uno. Eliminar más si no quieres esto.

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"); 

Usando guayaba puedes hacer esto:

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

La cadena que das es la forma de cadena de una expresión regular, así que:

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

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

Yo usaría Apache Commons:

import 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

Para dos secuencias de char como delimeters “AND” y “O” esto debería ser trabajado. No olvides recortar mientras usas.

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

Resultado: ciudades = {“ESTAMBUL”, “NUEVA YORK”, “PARÍS”, “TOKIO”, “MOSCÚ”}

También puede especificar la expresión regular como argumento en el método split (). Vea a continuación el ejemplo ….

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

Es mejor usar algo como esto:

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

Han agregado algunos otros personajes como muestra. Esta es la forma más segura de usar, porque el camino . y ' es tratado.

 s.trim().split("[\\W]+") 

Deberia trabajar.

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

Consulte el siguiente fragmento:

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