Aufteilen von Zeichenfolgen mit beibehaltenen Trennzeichen
Bei der Arbeit mit mehrzeiligen Zeichenfolgen, die durch eine Reihe eindeutiger Trennzeichen getrennt sind, kann es schwierig sein, die Zeichenfolge zu teilen Dabei bleiben auch die Trennzeichen selbst erhalten. Die Standardmethode String.split trennt die Zeichenfolge nur basierend auf dem angegebenen Trennzeichen und verwirft die Trennzeichen.
Verwenden von Lookahead und Lookbehind
Das Java Development Kit (JDK) bietet eine Lösung mit Lookahead und Lookbehind. Dabei handelt es sich um Funktionen regulärer Ausdrücke, mit denen Sie Zeichen abgleichen und erfassen können, ohne sie in das Endergebnis einzubeziehen.
Hier ist ein Beispiel für die Verwendung von Lookahead und Lookbehind:
String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";
String[] splitWithDelimiter = input.split("((?Das Muster:
- (?
- (?=;) entspricht einem Leerzeichen direkt vor einem Semikolon (lookahead).
- ((?
Ausgabe:
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Dieses Ergebnis behält die Trennzeichen zusammen mit dem Text bei und erfüllt die Anforderung, die Trennzeichen beim Teilen der Zeichenfolge intakt zu halten.
Verbesserung Lesbarkeit
Reguläre Ausdrücke können manchmal schwer zu lesen und zu verstehen sein. Um die Lesbarkeit zu verbessern, können Sie eine Variable mit einem beschreibenden Namen erstellen, der das reguläre Ausdrucksmuster darstellt. Zum Beispiel:
static final String WITH_DELIMITER = "((?Durch die Verwendung von Platzhaltern und dem String.format von Java können Sie den regulären Ausdruck intuitiver und einfacher zu interpretieren machen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3