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 l'analyse anticipée et l'analyse ultérieure, 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.
Voici un exemple utilisant l'analyse anticipée et l'analyse ultérieure :
<code class="java">String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)"; String[] splitWithDelimiter = input.split("((?<=;)|(?=;))"); System.out.println(Arrays.toString(splitWithDelimiter));</code>
Le modèle :
Sortie :
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Ce résultat préserve les délimiteurs avec le texte, répondant à l'exigence de garder les délimiteurs intacts lors de la division de la chaîne.
Améliorer 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 :
<code class="java">static final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public void someMethod() { final String[] splitResults = input.split(String.format(WITH_DELIMITER, ";")); }</code>
En utilisant des espaces réservés et le String.format de Java, vous pouvez rendre l'expression régulière plus intuitive et plus facile à interpréter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!