Java: Teilen Sie eine Zeichenfolge, die Sonderzeichen enthält

7

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?;

    
Dinoop paloli 30.04.2013, 10:25
quelle

6 Antworten

8

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.

    
Maroun 30.04.2013, 10:26
quelle
11

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):

%Vor%     
Martin Ender 30.04.2013 10:29
quelle
3

Sie können auch string.split (Pattern.quote ("|"), - 1) verwenden, um eine Zeichenfolge in einem Sonderzeichen aufzuteilen.

    
Santosh 04.05.2015 08:59
quelle
1

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.

    
Lucas 30.04.2013 10:29
quelle
1

str.split("\|", -1) wird das Notwendige tun. Mögliches Duplikat: Hier

    
javadev 30.04.2013 10:30
quelle
1

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.

    
Datta 30.04.2013 10:36
quelle

Tags und Links