JavaRush /Java-Blog /Random-DE /Split-Methode in Java: Teilen Sie eine Zeichenfolge in Te...

Split-Methode in Java: Teilen Sie eine Zeichenfolge in Teile

Veröffentlicht in der Gruppe Random-DE
Lassen Sie uns über die String-Split- Methode sprechen : Was sie tut und warum sie benötigt wird. Es ist leicht zu erraten, dass es die Zeichenfolge teilt, aber wie funktioniert es in der Praxis? Schauen wir uns die Funktionsweise der Methode genauer an, besprechen einige nicht offensichtliche Details und finden gleichzeitig heraus, wie viele Split- Methoden es tatsächlich in der String- Klasse gibt. Lass uns gehen!

Definition und Signatur für Java String.split

Die Split- Methode in Java teilt eine Zeichenfolge mithilfe eines Trennzeichens, das mithilfe eines regulären Ausdrucks angegeben wird, in Teilzeichenfolgen auf. Geben wir der Methode eine Signatur und beginnen wir mit dem Tauchgang:
String[] split(String regex)
Aus der Signatur geht zweierlei hervor:
  1. Die Methode gibt ein Array von Zeichenfolgen zurück.
  2. Die Methode benötigt einen Regex- String als Parameter.
Schauen wir uns jedes Ding einzeln im Hinblick auf die oben angegebene Definition an.
  1. Die Methode gibt ein Array von Zeichenfolgen zurück.

    Die Definition enthält die folgenden Wörter: „Die Split- Methode in Java teilt einen String in Teilstrings.“ Diese Teilzeichenfolgen werden von der Methode in einem Array gesammelt und stellen deren Rückgabewert dar.

  2. Die Methode benötigt einen Regex- String als Parameter.

    Denken Sie auch hier an die Definition: „Teilt eine Zeichenfolge mithilfe eines Trennzeichens, das mithilfe eines regulären Ausdrucks angegeben wird, in Teilzeichenfolgen auf.“ Der akzeptierte Regex- Parameter ist ein reguläres Ausdrucksmuster, das auf die Quellzeichenfolge angewendet wird und mit dem Trennzeichen (oder der Zeichenkombination) in der Quellzeichenfolge übereinstimmt.

Split-Methode in Java: Teilen Sie einen String in Teile – 1

Split in der Praxis

Kommen wir nun zur Sache. Stellen wir uns vor, wir hätten eine Zeichenfolge mit Wörtern. Zum Beispiel so:
Ich liebe Java
Wir müssen die Zeichenfolge in Wörter zerlegen. Wir sehen, dass in dieser Zeile die Wörter durch Leerzeichen voneinander getrennt sind. Space ist in diesem Fall ein idealer Kandidat für die Trennrolle. So sieht der Code zur Lösung dieses Problems aus:
public class Main {
    public static void main(String[] args) {
        String str = "I love Java";
        String[] words = str.split(" ");
        for (String word : words) {
            System.out.println(word);
        }
    }
}
Die Ausgabe der Hauptmethode sind die folgenden Zeilen:
Ich liebe Java
Schauen wir uns noch ein paar Beispiele an, wie die Split- Methode funktionieren würde :
Linie Trennzeichen Ergebnis der Methode
„Ich liebe Java“ „ “ (Leerzeichen) { „Ich“ , „liebe“ , „Java“ }
„192.168.0.1:8080“ :: { "192.168.0.1" , "8080" }
„Rot, Orange, Gelb“ "," { „Rot“ , „Orange“ , „Gelb“ }
„Rot, Orange, Gelb“ "," { „Rot“ , „Orange“ , „Gelb“ }
Beachten Sie die Unterschiede zwischen den letzten beiden Zeilen in der Tabelle oben. In der vorletzten Zeile ist das Trennzeichen ein Komma, daher wird die Zeile so geteilt, dass einige Wörter führende Leerzeichen haben. In der letzten Zeile haben wir ein Komma und ein Leerzeichen als Trennzeichen verwendet. Daher enthielt das resultierende Array keine Zeilen mit führenden Leerzeichen. Dies ist nur ein kleines Detail, das zeigt, wie wichtig es ist, den richtigen Separator sorgfältig auszuwählen.

Führendes Trennzeichen

Es gibt noch eine weitere wichtige Nuance. Wenn die Quellzeichenfolge mit einem Trennzeichen beginnt, ist das erste Element des resultierenden Arrays die leere Zeichenfolge. In einem Beispiel würde es so aussehen: Quellzeichenfolge: „I love Java“ Trennzeichen: „ „ Resultierendes Array: { „“ , „I“ , „love“ , „Java“ } Aber wenn die Quellzeichenfolge mit einem Trennzeichen endet und nicht beginnt, wird das Ergebnis anders sein: Quellzeichenfolge: „I love Java“ Trennzeichen: „ „ Resultierendes Array: { „I“ , „love“ , „Java“ } Schauen wir uns im Code Variationen der Split- Methode an mit einem Trennzeichen am Ende und/oder am Anfang der Quellzeichenfolge:
public class Main {
    public static void main(String[] args) {
        print("I love Java".split(" "));
        print(" I love Java".split(" "));
        print("I love Java ".split(" "));
        print(" I love Java ".split(" "));
    }

    static void print(String[] arr) {
        System.out.println(Arrays.toString(arr));
    }
}
Die Ausgabe der Hauptmethode sieht folgendermaßen aus:
[Ich, liebe, Java] [, ich, liebe, Java] [Ich, liebe, Java] [, ich, liebe, Java]
Beachten Sie noch einmal, dass das resultierende Array die leere Zeichenfolge als erstes Element enthält, wenn das erste Zeichen in der Quellzeichenfolge ein Trennzeichen ist.

Überlasteter Kerl

Die String- Klasse verfügt über eine weitere Split- Methode mit dieser Signatur:
String[] split(String regex, int limit)
Diese Methode verfügt über einen zusätzlichen Grenzwertparameter : Er bestimmt, wie oft das Regex- Muster auf die Quellzeichenfolge angewendet wird. Nachfolgend finden Sie Erläuterungen:

Grenze > 0

Es wird das Limit -1 Mal angewendet . In diesem Fall wird die Länge des Arrays den Grenzwert nicht überschreiten . Das letzte Element des Arrays ist der Teil der Zeichenfolge, der auf das zuletzt gefundene Trennzeichen folgt. Beispiel:
public class Main {
    public static void main(String[] args) {
        print("I love Java".split(" ", 1));
        print("I love Java".split(" ", 2));
        /*
         Ausgabe:
         [Ich liebe Java]
         [Ich liebe Java]
        */
    }

    static void print(String[] arr) {
        System.out.println(Arrays.toString(arr));
    }
}

Grenze < 0

Das Trennzeichen-Suchmuster wird so oft wie möglich auf die Zeichenfolge angewendet. Die Länge des resultierenden Arrays kann beliebig sein. Beispiel:
public class Main {
    public static void main(String[] args) {
        // Beachten Sie das Leerzeichen am Ende der Zeile
        print("I love Java ".split(" ", -1));
        print("I love Java ".split(" ", -2));
        print("I love Java ".split(" ", -12));
        /*
         Ausgabe:
        [I, love, Java, ]
        [I, love, Java, ]
        [I, love, Java, ]

        Beachten Sie, dass das letzte Element des Arrays
        eine leere Zeichenfolge ist, die aus einem Leerzeichen
        am Ende resultiert Originalsaite.
        */
    }

    static void print(String[] arr) {
        System.out.println(Arrays.toString(arr));
    }
}

Grenze 0

Wie bei limit < 0 wird das Trennzeichenmuster so oft wie möglich auf die Zeichenfolge angewendet. Das resultierende Array kann eine beliebige Länge haben. Wenn die letzten Elemente gleich der leeren Zeichenfolge sind, werden sie im endgültigen Array verworfen. Beispiel:
public class Main {
    public static void main(String[] args) {
        // Beachten Sie das Leerzeichen am Ende der Zeile
        print("I love Java ".split(" ", 0));
        print("I love Java ".split(" ", 0));
        print("I love Java ".split(" ", 0));
        /*
         Ausgabe:
        [I, love, Java]
        [I, love, Java]
        [I, love, Java]
        Beachten Sie das Fehlen leerer Zeichenfolgen am Ende der Arrays
        */
    }

    static void print(String[] arr) {
        System.out.println(Arrays.toString(arr));
    }
}
Wenn wir uns die Implementierung der Split- Methode mit einem Argument ansehen, sehen wir, dass diese Methode ihre überladene Schwester mit einem zweiten Argument von Null aufruft:
public String[] split(String regex) {
    return split(regex, 0);
}

Diverse Beispiele

In der Arbeitspraxis kommt es manchmal vor, dass wir eine Linie nach bestimmten Regeln zusammengestellt haben. Diese Zeile kann von überall in unser Programm „kommen“:
  • von einem Drittanbieterdienst;
  • von einer Anfrage an unseren Server;
  • aus der Konfigurationsdatei;
  • usw.
Normalerweise kennt der Programmierer in einer solchen Situation die „Spielregeln“. Nehmen wir an, der Programmierer weiß, dass er über Informationen über den Benutzer verfügt, die nach diesem Muster gespeichert werden:
Benutzer-ID|Benutzeranmeldung|Benutzer-E-Mail
Nehmen wir zum Beispiel konkrete Werte:
135|bender|bender@gmail.com
Und nun steht der Programmierer vor der Aufgabe: eine Methode zu schreiben, die eine E-Mail an den Benutzer sendet. Ihm stehen Informationen über den Benutzer zur Verfügung, die im oben genannten Format aufgezeichnet werden. Nun, die Teilaufgabe, die wir weiterhin analysieren werden, besteht darin, die E-Mail-Adresse von allgemeinen Informationen über den Benutzer zu isolieren. Dies ist ein Beispiel, bei dem die Split- Methode nützlich sein kann. Wenn wir uns die Vorlage ansehen, verstehen wir schließlich, dass wir zum Extrahieren der E-Mail-Adresse des Benutzers aus allen Informationen nur die Zeile mit der Split- Methode teilen müssen . Dann befindet sich die E-Mail-Adresse im letzten Element des resultierenden Arrays. Lassen Sie uns ein Beispiel für eine solche Methode geben, die eine Zeichenfolge mit Informationen über den Benutzer verwendet und die E-Mail-Adresse des Benutzers zurückgibt. Nehmen wir zur Vereinfachung an, dass diese Zeichenfolge immer dem von uns benötigten Format entspricht:
public class Main {
    public static void main(String[] args) {
        String userInfo = "135|bender|bender@gmail.com";
        System.out.println(getUserEmail(userInfo));
        // Ausgabe: bender@gmail.com
    }

    static String getUserEmail(String userInfo) {
        String[] data = userInfo.split("\\|");
        return data[2]; // oder data[data.length - 1]
    }
}
Beachten Sie das Trennzeichen: „\\|“ . Da in regulären Ausdrücken „|“ - Dies ist ein Sonderzeichen, an das eine bestimmte Logik gebunden ist. Um es als reguläres Zeichen (dasjenige, das wir in der Quellzeichenfolge finden möchten) zu verwenden, müssen wir dieses Zeichen mit zwei Backslashes maskieren. Schauen wir uns ein anderes Beispiel an. Nehmen wir an, wir haben Informationen zu einer Bestellung, die ungefähr in diesem Format verfasst sind:
Artikelnummer_1, Artikelname_1, Artikelpreis_1; Artikelnummer_2, Artikelname_2, Artikelpreis_2;...; Artikelnummer_n, Artikelname_n, Artikelpreis_n
Na ja, oder nehmen wir konkrete Werte:
1, Gurken, 20,05; 2, Tomaten, 123,45; 3, Hasen, 0,50
Wir stehen vor der Aufgabe, die Gesamtkosten der Bestellung zu berechnen. Hier müssen wir die Split- Methode mehrmals anwenden. Der erste Schritt besteht darin, die Zeichenfolge durch das „;“-Symbol in ihre Bestandteile zu zerlegen. Dann haben wir in jedem dieser Teile Informationen über ein einzelnes Produkt, das wir in Zukunft verarbeiten können. Und dann trennen wir innerhalb jedes Produkts die Informationen mithilfe des Symbols „“, und nehmen aus dem resultierenden Array ein Element mit einem bestimmten Index (in dem der Preis gespeichert ist), wandeln es in eine numerische Form um und ermitteln den endgültigen Preis der Bestellung. Schreiben wir eine Methode, die das alles berechnet:
public class Main {
    public static void main(String[] args) {
        String orderInfo = „1, Gurken, 20,05; 2, Tomaten, 123,45; 3, Hasen, 0,50“;
        System.out.println(getTotalOrderAmount(orderInfo));
        // Ausgabe: 144.0
    }

    static double getTotalOrderAmount(String orderInfo) {
        double totalAmount = 0d;
        final String[] items = orderInfo.split(";");

        for (String item : items) {
            final String[] itemInfo = item.split(",");
            totalAmount += Double.parseDouble(itemInfo[2]);
        }

        return totalAmount;
    }
}
Versuchen Sie selbst herauszufinden, wie diese Methode funktioniert. Basierend auf diesen Beispielen können wir sagen, dass die Split- Methode verwendet wird, wenn wir einige Informationen in String-Form haben, aus denen wir spezifischere Informationen extrahieren müssen.

Ergebnisse

Wir haben uns die Split- Methode der String- Klasse angesehen . Es ist erforderlich, eine Zeichenfolge mithilfe eines speziellen Trennzeichens in ihre Bestandteile aufzuteilen. Die Methode gibt ein Array von Strings (die Komponenten eines Strings) zurück. Akzeptiert einen regulären Ausdruck, der die Trennzeichen findet. Wir haben uns die verschiedenen Feinheiten dieser Methode angesehen:
  • führendes Trennzeichen;
  • überlasteter Bruder mit zwei Argumenten.
Wir haben auch versucht, einige „reale“ Situationen zu simulieren, in denen wir die Split- Methode verwendet haben , um zwar fiktive, aber durchaus realistische Probleme zu lösen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION