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
split
es 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\\.