Java split string a array

Necesito ayuda con el método split() . Tengo la siguiente String :

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

Necesito poner los valores en una matriz. Hay 3 cadenas posibles: “0”, “1” y “”

Mi problema es cuando trato de usar split() :

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

Mis valores se guardan solo hasta el último 0. Parece que la parte “|||” se recorta. ¿Qué estoy haciendo mal?

Gracias

Este comportamiento está explícitamente documentado en String.split(String regex) (énfasis mío):

Este método funciona como si invocando el método de división de dos argumentos con la expresión dada y un argumento de límite de cero. Por lo tanto, las cadenas vacías no se incluyen en la matriz resultante.

Si desea incluir cadenas finales vacías, debe usar String.split(String regex, int limit) con un valor negativo para el segundo parámetro ( limit ):

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

Prueba esto

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

Considera este ejemplo:

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

El resultado no incluye las cadenas vacías entre el “|” separador. Para mantener las cadenas vacías:

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

Para obtener más detalles, vaya a este sitio web: http://www.rgagnon.com/javadetails/java-0438.html

Esto es esperado. Consulte Javadocs para split .

 Splits this string around matches of the given regular expression. 

Este método funciona como si invocando el método de división de dos argumentos (java.lang.String, int) con la expresión dada y un argumento de límite de cero. Por lo tanto, las cadenas vacías no se incluyen en la matriz resultante.