Java splitst string naar array

Ik heb hulp nodig met de split() methode.
Ik heb de volgendeString:

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

Ik moet de waarden in een array plaatsen. Er zijn 3 mogelijke strings: “0”, “1” en “”

Mijn probleem is, wanneer ik split() probeer te gebruiken:

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

Mijn waarden worden alleen bewaard tot de laatste 0. Lijkt op het gedeelte “|||” wordt getrimd.
Wat doe ik verkeerd?

bedankt


Antwoord 1, autoriteit 100%

Dit gedrag is expliciet gedocumenteerd in String.split(String regex) (nadruk van mij):

Deze methode werkt alsof ze de twee-argumenten splitsmethode aanroept met de gegeven uitdrukking en een limietargument van nul. Lege strings achteraan worden daarom niet opgenomen in de resulterende array.

Als je die achterste lege strings wilt opnemen, moet je String.split(String regex, int limit) met een negatieve waarde voor de tweede parameter (limit) :

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

Antwoord 2, autoriteit 18%

Probeer dit

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

Antwoord 3, autoriteit 9%

Beschouw dit voorbeeld:

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]
  }
}

Het resultaat bevat niet de lege strings tussen de “|” scheidingsteken. Om de lege strings te behouden:

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, , , ]
  }
}

Ga voor meer informatie naar deze website: http://www.rgagnon.com/ javadetails/java-0438.html


Antwoord 4

Dit wordt verwacht.
Raadpleeg Javadocs voor split.

Splits this string around matches of the given regular expression.

Deze methode werkt alsof ze de twee-argumenten split(java.lang.String,int) methode aanroept met de gegeven uitdrukking en een limietargument van nul. Lege strings achteraan worden daarom niet opgenomen in de resulterende array.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

11 − 5 =

Other episodes