"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como dividir strings com delimitadores preservados usando Java Lookahead e Lookbehind?

Como dividir strings com delimitadores preservados usando Java Lookahead e Lookbehind?

Publicado em 2024-11-08
Navegar:155

How to Split Strings with Delimiters Preserved Using Java Lookahead and Lookbehind?

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729746892 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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