Heim  >  Artikel  >  Java  >  Können Trennzeichen beim String-Splitting beibehalten werden?

Können Trennzeichen beim String-Splitting beibehalten werden?

Susan Sarandon
Susan SarandonOriginal
2024-10-25 02:00:02243Durchsuche

Can Delimiters be Retained during String Splitting?

Trennzeichen während der Zeichenfolgenaufteilung beibehalten

Wenn Sie mit einer mehrzeiligen Zeichenfolge arbeiten, die durch eine Reihe von Trennzeichen getrennt ist, besteht eine häufige Aufgabe darin, sie in mehrere Zeichenfolgen aufzuteilen Einzelteile. Typischerweise wird zu diesem Zweck die Methode String.split verwendet. Bei diesem Ansatz werden jedoch die Trennzeichen aus dem Ergebnis weggelassen.

Verwendung von Lookahead und Lookbehind

Um die Trennzeichen während der Aufteilung beizubehalten, kann das Konzept von Lookahead und Lookbehind in regulären Ausdrücken verwendet werden verwendet werden.

Bedenken Sie den folgenden Code:

<code class="java">System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("(?=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")));</code>

Dieser Code verwendet Lookahead und Lookbehind, um die Zeichenfolge zu untersuchen. Insbesondere entspricht (?<=;) einer leeren Zeichenfolge, die unmittelbar vor einem Semikolon (;) steht, und (?=;) entspricht einer leeren Zeichenfolge, die unmittelbar einem Semikolon folgt.

Die letzte Zeile, die geteilt wird on ((?<=;)|(?=;)), trennt die Zeichenfolge effizient in Text- und Trennzeichenkomponenten:

[a;, b;, c;, d]
[a, ;b, ;c, ;d]
[a, ;, b, ;, c, ;, d]

Im gewünschten Ergebnis erfasst die dritte Zeile die genaue Anforderung, Dabei folgt auf jedes Textsegment das entsprechende Trennzeichen.

Verbesserung der Lesbarkeit mit Variablen

Um die Lesbarkeit regulärer Ausdrücke zu verbessern, sollten Sie erwägen, eine Variable zu erstellen, die ihre Funktion darstellt. Der folgende Code verwendet beispielsweise die Variable WITH_DELIMITER, um das Trennzeichen anzugeben:

<code class="java">static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";

public void someMethod() {
    final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";"));
    ...
}</code>

Diese Technik hilft dabei, die Absicht des regulären Ausdrucks zu verdeutlichen.

Das obige ist der detaillierte Inhalt vonKönnen Trennzeichen beim String-Splitting beibehalten werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn