107 Stimmen

Java Zeichenfolge in ein Array aufteilen

Ich benötige Hilfe bei der split()-Methode. Ich habe folgendes String:

String values = "0|0|0|1|||0|1|0|||";

Ich muss die Werte in ein Array einfügen. Es gibt 3 mögliche Zeichenfolgen: "0", "1" und ""

Mein Problem ist, wenn ich versuche, split() zu verwenden:

String[] array = values.split("\\|");

Meine Werte werden nur bis zum letzten 0 gespeichert. Es scheint, als ob der Teil "|||" abgeschnitten wird. Was mache ich falsch?

Danke

154voto

Mark Rotteveel Punkte 90154

Dieses Verhalten ist explizit in String.split(String regex) dokumentiert (Hervorhebung von mir):

Diese Methode funktioniert so, als ob die Split-Methode mit zwei Argumenten mit dem angegebenen Ausdruck und einem Limit-Argument von null aufgerufen würde. Nachfolgende leere Strings sind daher nicht enthalten im resultierenden Array.

Wenn Sie diese nachfolgenden leeren Strings einschließen möchten, müssen Sie String.split(String regex, int limit) mit einem negativen Wert für den zweiten Parameter (Limit) verwenden:

String[] array = values.split("\\|", -1);

26voto

Lokesh Punkte 7870

Versuche dies

String[] array = values.split("\\|", -1);

13voto

S. Mayol Punkte 2217

Überlegen Sie sich dieses Beispiel:

public class StringSplit {
  public static void main(String args[]) throws Exception{
    String testString = "Real|How|To|||";
    System.out.println
       (java.util.Arrays.toString(testString.split("\\|")));
    // output : [Real, How, To]
  }
}

Das Ergebnis enthält keine leeren Zeichenfolgen zwischen dem "|" Trennzeichen. Um die leeren Zeichenfolgen zu behalten:

public class StringSplit {
  public static void main(String args[]) throws Exception{
    String testString = "Real|How|To|||";
    System.out.println
       (java.util.Arrays.toString(testString.split("\\|", -1)));
    // output : [Real, How, To, , , ]
  }
}

Für weitere Details besuchen Sie diese Website: http://www.rgagnon.com/javadetails/java-0438.html

1voto

Srinivas Punkte 1760

Dies wird erwartet. Verwenden Sie die Javadocs für split.

Teilt diesen String um Übereinstimmungen mit dem angegebenen regulären Ausdruck.

Diese Methode funktioniert, als würde sie die split(java.lang.String, int)-Methode mit dem gegebenen Ausdruck und einem Limit-Argument von null aufrufen. Am Ende der Zeichenkette stehende leere Zeichenfolgen sind daher nicht im resultierenden Array enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X