[Java] Die Geschichte, dass das erwartete Array nicht von der String.split-Methode erhalten wurde.

Einführung

Die String-Methode von Java verfügt über eine Split-Methode. Mit dieser Methode können Sie beispielsweise wie folgt eine Zeichenfolge durch ein beliebiges Zeichen teilen und mit den geteilten Elementen ein Array generieren.

example1.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Die Zeichenfolge, die Sie zu einem Array erstellen möchten
        String str = "Apfel,Orange,Banane,Wassermelone,Melone";
        //Geben Sie das Zeichen an, das für die Division verwendet werden soll
        String[] strArray = str.split(",");
        for(int i = 0; i < strArray.length; i++) {
            System.out.println((i + 1) + ":" + strArray[i]);
        }
    }
}

Wenn Sie diese Quelle ausführen

1: Apple 2: Mikan 3: Banane 4: Wassermelone 5: Melone

Das Ergebnis wird erhalten. Nun die Split-Methode, aber was ist, wenn die zum Teilen verwendeten Zeichen wie im folgenden Beispiel aufeinander folgen?

example2.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Die Zeichenfolge, die Sie zu einem Array erstellen möchten
        String str = "Apfel,Orange,,,";
        //Geben Sie das Zeichen an, das für die Division verwendet werden soll
        String[] strArray = str.split(",");
        for(int i = 0; i < strArray.length; i++) {
            System.out.println((i + 1) + ":" + strArray[i]);
        }
    }
}

Wenn Sie diese Quelle ausführen

1: Apple 2: Mikan 3: 4: 5:

Ich hatte erwartet, das Ergebnis zu erzielen, aber es war nicht so.

1: Apple 2: Mikan

Wurde angezeigt. Mit anderen Worten bedeutet dies, dass die Größe des in "example2.java" erhaltenen Arrays 2 statt 5 beträgt. Im obigen Beispiel dachte ich, dass die Größe des Arrays 5 wäre, wenn ich die Split-Methode verwenden würde, aber als ich sie tatsächlich in meinem Unternehmen verwendete, war sie nicht wie erwartet und ich war enttäuscht.

Lösung

Wie habe ich das bekommen, was ich erwartet hatte? Geben Sie abschließend -1 (negative Zahl) als zweites Argument der Split-Methode an, wie im folgenden Beispiel gezeigt.

example3.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Die Zeichenfolge, die Sie zu einem Array erstellen möchten
        String str = "Apfel,Orange,,,";
        //Im zweiten Argument-Geben Sie 1 an
        String[] strArray = str.split(",", -1);
        for(int i = 0; i < strArray.length; i++) {
            System.out.println((i + 1) + ":" + strArray[i]);
        }
    }
}

Durch Angabe von -1 als zweites Argument

1: Apple 2: Mikan 3: 4: 5:

Als Ergebnis konnten wir die Größe des Arrays so viele wie die durch Kommas geteilte Zahl erhalten.

Was ich gelernt habe

Bei der Lösung dieses Problems habe ich das offizielle Dokument gelesen und zwei Dinge gefunden. Ich konnte lernen.

Das erste ist, dass die "split" -Methode nicht durch die im ersten Argument angegebene Zeichenfolge geteilt wird, sondern korrekt durch den durch das erste Argument angegebenen ** regulären Ausdruck **.

Ich war überzeugt, dass es durch die angegebene Zeichenfolge geteilt werden würde, und erkannte, dass es möglich ist, die Zeichenfolge unter komplizierteren Bedingungen zu teilen, indem reguläre Ausdrücke vollständig verwendet werden.

Die zweite besteht darin, im zweiten Argument der "split" -Methode eine negative Zahl anzugeben, wenn die Zeichenfolgen, die Sie teilen möchten, wie im obigen Beispiel fortlaufend sind. Das zweite Argument der Split-Methode repräsentiert den Split-Schwellenwert. Wenn das zweite Argument nicht angegeben wird, wird es genauso behandelt, als ob für das zweite Argument 0 angegeben wird. In diesem Fall wird das Ergebnis der Aufteilung in der Reihenfolge ein leeres Zeichen verworfen. In example2.java beträgt die Größe des geteilten Arrays jetzt 2 statt 5. Um dies zu verhindern, habe ich festgestellt, dass für das zweite Argument eine negative Zahl angegeben werden muss, damit die Anzahl der Unterteilungen unbegrenzt ist und leere Zeichen nicht verworfen werden.

abschließend

Ich konnte erneut bekräftigen, wie wichtig es ist, bei der Lösung dieses Problems auf die offizielle Dokumentation zu verweisen. Und ich konnte erkennen, wie wichtig es ist, die Methode zu verwenden, nachdem ich genau verstanden hatte, welche Art von Verarbeitung durchgeführt wird. Ich hoffe dieser Artikel hilft jemandem.

Recommended Posts

[Java] Die Geschichte, dass das erwartete Array nicht von der String.split-Methode erhalten wurde.
Die Geschichte, dass die vom Java-Konstruktor aufgerufene Methode zur Variableninitialisierung nicht überschrieben werden sollte
Die Geschichte, das Verhalten von String durch Passieren von Java nicht zu kennen
Die Geschichte von Java SE11 Silber erhalten
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
Die Geschichte, die ich nach der Installation mehrerer Java unter Windows nicht erstellen konnte
[Spring Boot] Die Geschichte, dass die Bean der Klasse mit der Annotation ConfigurationProperties nicht gefunden wurde
Lesen Sie die Paketerfassung, die von tcpdump mit Java erhalten wurde
Die Geschichte, dass das erzwungene Update nicht implementiert werden konnte
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Die Geschichte, dass der Anforderungsparameter aus der iPhone-Anwendung mit dem Servlet nicht erfolgreich abgerufen werden konnte
Auf die Version von Ruby, die standardmäßig auf dem Mac installiert war, wurde verwiesen, nicht von rbenv
Zusammenfassung der von der Spliterator-Merkmalsmethode #java zurückgegebenen Werte
[Java Silver] So generieren Sie ein Array
[Gradle] Die Geschichte, dass die Klassendatei nicht in der JAR-Datei vorhanden war
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Der Operator, der geboren wurde, um geboren zu werden, instanceof (Java) ~ So verwenden Sie den instanceof-Operator ~
Die Geschichte, dass der Erstellungsfehler bei Verwendung von Eclipse 2020 nicht aufgehört hat
Die Geschichte, dass die Verarbeitungsleistung von ARM von Open JDK niedrig war
Die Geschichte, ein Projekt zu bauen, das Maven mit Ant gebaut hat