Necesito dividir una base de cadena en delimitador -y .. Debajo están mis resultados deseados.
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("-\\.");
}
                
AA/BB/CC...)Respuestas:
Creo que debe incluir el operador regex OR :
Lo que tenga coincidirá:
[DASH seguido de DOT juntos]
-.no
[DASH o DOT ninguno de ellos]
-o.fuente
.carácter en regex significa cualquier carácter que no sea una nueva línea. tutorialspoint.com/java/java_regular_expressions.htm En este caso, sin embargo, querían el personaje real.. Las dos barras invertidas indican a qué se refiere.. La barra invertida es un personaje de escape..split("match1|match2"), (por ejemplosplit("https|http")), \\ es escapar del char especial.en el caso anteriorpdfName.split("\\W");siguiente respuesta de @Peter Knego[-.]lugar de-|\\.Prueba esta expresión regular
"[-.]+". El + después trata los caracteres delimitadores consecutivos como uno. Elimina plus si no quieres esto.fuente
-fue porque fue lo primero que pensó en el interior[], de lo contrario, tendría que haber una barra invertida frente a ella (y, por supuesto, para poner una barra invertida frente a ella, nosotros necesita dos porque este es un literal de cadena).Puede usar la expresión regular "\ W". Esto coincide con cualquier carácter que no sea de palabra. La línea requerida sería:
fuente
\W.La cadena que da
splites la forma de cadena de una expresión regular, por lo que:Eso significa dividirse 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 esta es una cadena). (Por el contrario,.normalmente es especial pero no es especial por dentro[]).fuente
[-.]no podría interpretarse como un rango.String[] strings = codes.get(x).split("\\[|\\]| ");<- código para todos los interesadosUsando Guava puedes hacer esto:
fuente
Para dos secuencias de caracteres como delimitadores "AND" y "OR", esto debería funcionar. No olvide cortar durante el uso.
Resultado: ciudades = {"ESTAMBUL", "NUEVA YORK", "PARÍS", "TOKIO", "MOSCÚ"}
fuente
Yo usaría Apache Commons:
importar
org.apache.commons.lang3.StringUtils;Se dividirá en cualquiera de los separadores especificados, a diferencia de los
StringUtils.splitByWholeSeparator(str, separator)que usan la cadena completa como separadorfuente
fuente
Es mejor usar algo como esto:
He agregado algunos otros personajes como muestra. Esta es la forma más segura de usar, porque la forma
.y el'tratamiento.fuente
También puede especificar la expresión regular como argumento en el método split () ... vea el siguiente ejemplo ...
fuente
Prueba este código:
fuente
Deberia trabajar.
fuente
Si sabe que la picadura siempre estará en el mismo formato, primero divida la cadena según
.y almacene la cadena en el primer índice en una variable. Luego, divida la cadena en el segundo índice según-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:
fuente
pdfName.split(".")da como resultado una matriz de longitud cero..Necesita ser escapado como\\.