Java value.split expressão regular ( “\\.”), “A barra de ponto de volta” divide por personagem?

StackOverflow https://stackoverflow.com/questions/1480284

  •  18-09-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top