Diviser des chaînes avec des délimiteurs conservés
Lorsque vous travaillez avec des chaînes multilignes délimitées par un ensemble de délimiteurs uniques, il peut être difficile de diviser la chaîne tout en préservant les délimiteurs eux-mêmes. La méthode standard String.split sépare uniquement la chaîne en fonction du délimiteur spécifié, en supprimant les caractères délimiteurs.
Utilisation de Lookahead et Lookbehind
Le kit de développement Java (JDK) fournit une solution utilisant le lookahead et le lookbehind, qui sont des fonctionnalités d'expressions régulières qui vous permettent de faire correspondre et de capturer des caractères sans les inclure dans le résultat final. result.
Voici un exemple utilisant l'anticipation et l'anticipation :
String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";
String[] splitWithDelimiter = input.split("((?Le modèle :
- (?
- (?=;) correspond à un caractère vide juste avant un point-virgule (lookahead).
- ((?
Sortie :
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Ce résultat préserve les délimiteurs avec le texte, répondant ainsi à l'exigence de conserver les délimiteurs intacts lors de la division de la chaîne.
Amélioration de la lisibilité
Les expressions régulières peuvent parfois être difficiles à lire et à comprendre. Pour améliorer la lisibilité, vous pouvez créer une variable avec un nom descriptif qui représente le modèle d'expression régulière. Par exemple :
static final String WITH_DELIMITER = "((?En utilisant des espaces réservés et le format String.format de Java, vous pouvez rendre l'expression régulière plus intuitive et plus facile à interpréter.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3