Dividindo strings com delimitadores preservados
Ao trabalhar com strings multilinhas delimitadas por um conjunto de delimitadores exclusivos, pode ser um desafio dividir a string ao mesmo tempo que preserva os próprios delimitadores. O método String.split padrão separa apenas a string com base no delimitador especificado, descartando os caracteres delimitadores.
Usando Lookahead e Lookbehind
O Java Development Kit (JDK) fornece uma solução usando lookahead e lookbehind, que são recursos de expressões regulares que permitem combinar e capturar caracteres sem incluí-los no final resultado.
Aqui está um exemplo usando lookahead e lookbehind:
String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";
String[] splitWithDelimiter = input.split("((?O padrão:
- (?
- (?=;) corresponde a um caractere vazio diretamente antes de um ponto e vírgula (lookahead).
- ((?
Saída:
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Este resultado preserva os delimitadores junto com o texto, cumprindo o requisito de manter os delimitadores intactos durante a divisão da string.
Melhorando a legibilidade
Expressões regulares às vezes podem ser difíceis de ler e compreender. Para melhorar a legibilidade, você pode criar uma variável com um nome descritivo que represente o padrão de expressão regular. Por exemplo:
static final String WITH_DELIMITER = "((?Usando espaços reservados e String.format do Java, você pode tornar a expressão regular mais intuitiva e fácil de interpretar.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3