Ich habe eine Zeichenfolge wie ||81|||01||
und möchte die Zeichenfolge mit |
symbol teilen.
Ich hatte diesen Weg gemacht,
%Vor% Was ist falsch an diesem Code? | Wie kann ich diese Zeichenfolge mit diesem Zeichen teilen, damit ich die erwartete Länge ( 8
) bekomme?;
Drucken:
System.out.println(Arrays.toString(str.split("\|")));
Und Sie werden verstehen, warum es 6 druckt.
Sie können versuchen, was Sie wollen mit öffentlichen String [] geteilt (String regex, int limit) :
Der Parameter limit steuert die Anzahl der Muster angewendet und wirkt sich daher auf die Länge des resultierenden Arrays aus.
Also sollten Sie tun:
%Vor%Nun wird das Array gedruckt:
[, , 81, , , 01, , ]
wie von Ihnen erwartet.
split("\|")
ist dasselbe wie split("\|", 0)
, wobei der limit-Parameter 0
die Funktion" leere Zeichenketten weglassen "angibt. Du verpasst also die letzten zwei leeren Saiten. Verwenden Sie die Zwei-Argument-Version und geben Sie eine negative Zahl an, um alle Teile zu erhalten (selbst wenn sie leer sind):
Sie müssen Folgendes verwenden:
%Vor% Der zweite Parameter ist limit
. Aus dem Javadoc:
Der Parameter limit steuert die Anzahl der Muster angewendet und wirkt sich daher auf die Länge des resultierenden Arrays aus. Ob die Grenze n ist größer als Null, dann wird das Muster bei angewendet die meisten n - 1 mal, die Länge des Arrays wird nicht größer als n, und Der letzte Eintrag des Arrays enthält alle Eingaben, die über die letzte Übereinstimmung hinausgehen Trennzeichen. Wenn n nicht positiv ist, wird das Muster als angewendet so oft wie möglich und das Array kann eine beliebige Länge haben. Wenn n Null ist Dann wird das Muster so oft wie möglich auf das Array angewendet kann eine beliebige Länge haben und nachfolgende leere Zeichenfolgen werden verworfen.
String str = "||81|||01||";
System.out.println(str.split("\|", 8).length);
Das zweite Split-Argument gibt die maximale Anzahl der Übereinstimmungen an. Die Aufteilung einzelner Argumente ist wie das Aufrufen von split (str, 0), wodurch nachgestellte Strings weggelassen werden. Siehe Javadoc von beiden für weitere Erläuterungen.