Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erläuterung der Verwendung der Split-Methode von Java

高洛峰
Freigeben: 2017-01-18 15:36:08
Original
1318 Leute haben es durchsucht

Ich glaube, jeder verwendet oft die Split-Methode von String, aber sind Sie jemals auf die folgende Situation gestoßen:

Denken Sie an das Ausführungsergebnis des folgenden Codes

public static void main(String[] args) {
    // TODO Auto-generated method stub
 
    String str1 = "a,b,c,,,a";
    String str2 = "a,b,c,,,";
    String str3 = "a,b,c, , ,";
    String[] s1 = str1.split(",");
    String[] s2 = str2.split(",");
    String[] s3 = str3.split(",");
     System.out.println("str1长度:"+s1.length);
    System.out.println("str2长度:"+s2.length);
    System.out.println("str3长度:"+s3.length);
}
Nach dem Login kopieren

Ausführungsergebnis:

Detaillierte Erläuterung der Verwendung der Split-Methode von Java

Warum tritt ein solches Ergebnis auf? Beim Durchsuchen der API wurde eine Lösung gefunden.

Lösung:

Durch Überprüfung In der API haben wir festgestellt, dass unsere häufig verwendete Split-Methode standardmäßig 0 übergibt. Die Lösung zur Lösung des Problems der leeren str2-Ausgabe besteht darin, den zweiten Parameter als negative Zahl zu übergeben, d. h.

public static void main(String[] args) {
  // TODO Auto-generated method stub
 
  String str1 = "a,b,c,,,a";
  String str2 = "a,b,c,,,";
  String str3 = "a,b,c, , ,";
  String[] s1 = str1.split(",");
  String[] s2 = str2.split(",",-1);
  String[] s3 = str3.split(",",-1);
   
  System.out.println("str1长度:"+s1.length);
  System.out.println("str2长度:"+s2.length);
  System.out.println("str3长度:"+s3.length);
}
Nach dem Login kopieren

Nachdem Durchsuchen der API wurde festgestellt, dass es in der String-Klasse zwei geteilte überladene Methoden gibt

1.public String[] split(String regex)

Gemäß der gegebener regulärer Ausdruck Match teilt diese Zeichenfolge.

Diese Methode verhält sich wie der Aufruf der Split-Methode mit zwei Argumenten mit dem angegebenen Ausdruck und dem Einschränkungsargument 0. Daher ist die abschließende leere Zeichenfolge nicht im resultierenden Array enthalten.

Zum Beispiel verwendet die Zeichenfolge „boo:and:foo“ diese Ausdrücke, um die folgenden Ergebnisse zu erzeugen:

Regex-Ergebnisse

: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
Nach dem Login kopieren

Parameter:
  Regex – durch Trennzeichen getrennter regulärer Ausdruck
gibt zurück:
ein Array von Zeichenfolgen, das durch Aufteilen dieser Zeichenfolge basierend auf Übereinstimmungen mit dem angegebenen regulären Ausdruck bestimmt wird.
löst Folgendes aus:
PatternSyntaxException – Wenn die Syntax der regulärer Ausdruck ist ungültig

2.public String[] split(String regex,int limit)

Teilen Sie dieses Zeichen basierend auf der Übereinstimmung mit der angegebenen Zeichenfolge des regulären Ausdrucks auf.

Das von dieser Methode zurückgegebene Array enthält Teilzeichenfolgen dieser Zeichenfolge, von denen jede durch eine andere Teilzeichenfolge, die dem angegebenen Ausdruck entspricht, oder durch das Ende dieser Zeichenfolge abgeschlossen wird. Die Teilzeichenfolgen im Array werden in der Reihenfolge angeordnet, in der sie in dieser Zeichenfolge erscheinen. Wenn der Ausdruck mit keinem Teil der Eingabe übereinstimmt, enthält das resultierende Array nur ein Element, den String. Der Parameter

limit steuert die Häufigkeit, mit der das Muster angewendet wird, und wirkt sich somit auf die Länge des resultierenden Arrays aus. Wenn der Grenzwert n größer als 0 ist, wird das Muster höchstens n-1 Mal angewendet, die Länge des Arrays wird nicht größer als n sein und das letzte Element des Arrays enthält alle Eingaben über das letzte übereinstimmende Trennzeichen hinaus . Wenn n nicht positiv ist, wird das Muster so oft wie möglich angewendet und das Array kann eine beliebige Länge haben. Wenn n 0 ist, wird das Muster so oft wie möglich angewendet, das Array kann eine beliebige Länge haben und die abschließende leere Zeichenfolge wird verworfen.

Zum Beispiel erzeugt die Zeichenfolge „boo:and:foo“ unter Verwendung dieser Parameter das folgende Ergebnis:

Regex Limit result

: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
Nach dem Login kopieren

Str.split ruft diese Methode auf Die Form (regex, n) erzeugt genau das gleiche Ergebnis wie der folgende Ausdruck:

Pattern.compile(regex).split(str, n)

Parameter:

regex – durch Trennzeichen getrennter regulärer Ausdruck
Limit – Ergebnisschwellenwert, wie oben

Rückgabe:
Array von Zeichenfolgen, aufgeteilt basierend auf Übereinstimmungen mit dem angegebenen regulären Ausdruck. Diese Zeichenfolge bestimmt

löst aus:
PatternSyntaxException – wenn die Syntax des regulären Ausdrucks ungültig ist

Ausführlichere Erklärungen zur Split-Methode von Java und verwandte Artikel finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!