Java value.split expressão regular ( “\\.”), “A barra de ponto de volta” divide por personagem?
Pergunta
Pelo que eu entendo, o ponto de barra invertida (\.
) significa um caractere de qualquer personagem? Então porque barra invertida é uma fuga, deve ser invertida barra invertida ponto ("\\."
)
O que isso faz para uma string? Eu só vi isso em um código existente que eu estou trabalhando. Pelo que eu entendo, ele vai dividir a string em caracteres individuais. Por que fazer isso em vez de String.toCharArray()
. Portanto, este divide a string para uma matriz de corda que contém apenas um caractere para cada corda na matriz?
Solução
Meu palpite é que você está faltando que barra invertida ( '\') caracteres são caracteres de escape em literais Java String. Então, quando você quiser usar um '\' escapar em um regex escrito como uma String Java você precisa para escapar; por exemplo.
Pattern.compile("\."); // Java syntax error
// A regex that matches a (any) character
Pattern.compile(".");
// A regex that matches a literal '.' character
Pattern.compile("\\.");
// A regex that matches a literal '\' followed by one character
Pattern.compile("\\\\.");
O método String.split(String separatorRegex)
divide um String em subsequências separadas por subsequências correspondentes a expressão regular. Então str.split("\\.")
irá dividir str
em substrings separadas por um único literal '' caráter.
Outras dicas
O regex "" corresponderia a qualquer personagem como você indicar. No entanto, um ponto escapou "\". iria coincidir com caracteres ponto literais. Assim 192.168.1.1 dividida em "\". resultaria em { "192", "168", "1", "1"}.
Seu texto não é completamente claro, mas acho que isso é o que você está pedindo.