Eu preciso dividir uma base de string no delimitador -
e .
. Abaixo estão os resultados desejados.
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
mas meu código a seguir não funciona.
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA
/BB
/CC
...)Respostas:
Eu acho que você precisa incluir o operador regex OR :
O que você possui corresponderá:
[DASH seguido por DOT juntos]
-.
não
[DASH ou DOT nenhum deles]
-
ou.
fonte
.
caractere na expressão regular significa qualquer caractere que não seja a nova linha. tutorialspoint.com/java/java_regular_expressions.htm Nesse caso, porém, eles queriam o caractere real.
. As duas barras invertidas indicam que você está se referindo.
. A barra invertida é um caractere de escape..split("match1|match2")
, (por ex.split("https|http")
, \\ é escapar o caractere especial).
no caso acimapdfName.split("\\W");
como abaixo a resposta de Peter Knego[-.]
vez de-|\\.
Experimente este regex
"[-.]+"
. O + depois trata caracteres delimitadores consecutivos como um. Remova mais se você não quiser isso.fonte
-
foi que é a primeira vez que ela pensa[]
, caso contrário, haveria uma barra invertida na frente dele (e, é claro, para colocar uma barra invertida na frente dele, nós precisa de dois porque esta é uma string literal).Você pode usar a regex "\ W". Isso corresponde a qualquer caractere que não seja da palavra. A linha necessária seria:
fonte
\W
.A string que você fornece
split
é a forma de string de uma expressão regular, portanto:Isso significa dividir qualquer caractere no
[]
(temos que escapar-
com uma barra invertida porque é especial por dentro[]
; e é claro que temos que escapar da barra invertida porque essa é uma string). (Por outro lado,.
é normalmente especial, mas não é especial por dentro[]
.)fonte
[-.]
não poderia ser interpretado como um intervalo.String[] strings = codes.get(x).split("\\[|\\]| ");
<- código para qualquer pessoa interessadaUsando o Guava, você pode fazer o seguinte:
fonte
Para duas sequências de caracteres como delímetros "AND" e "OR", isso deve ser trabalhado. Não se esqueça de aparar enquanto estiver usando.
Resultado: cidades = {"ISTAMBUL", "NOVA IORQUE", "PARIS", "TÓQUIO", "MOSCOVO"}
fonte
Eu usaria o Apache Commons:
importar
org.apache.commons.lang3.StringUtils;
Ele será dividido em qualquer um dos separadores especificados, em vez de
StringUtils.splitByWholeSeparator(str, separator)
usar a sequência completa como um separadorfonte
fonte
É melhor usar algo como isto:
Adicionaram alguns outros caracteres como amostra. Esta é a maneira mais segura de usar, porque a maneira
.
e'
é tratada.fonte
Você também pode especificar expressão regular como argumento no método split () .. veja o exemplo abaixo ....
fonte
Tente este código:
fonte
Deveria trabalhar.
fonte
Se você souber que a picada sempre estará no mesmo formato, primeiro divida a string com base
.
e armazene-a no primeiro índice de uma variável. Em seguida, divida a sequência no segundo índice com base-
e armazene os índices 0, 1 e 2. Finalmente, divida o índice 2 da matriz anterior com base em.
e você deve ter obtido todos os campos relevantes.Consulte o seguinte trecho:
fonte
pdfName.split(".")
resulta em uma matriz de comprimento zero..
Precisa ser evitado como #\\.