können Sie versuchen, split
Methode mit (?<=\\G\\d+,\\d+,\\d+),
regex verwenden
Demo
String data = "0,0,1,2,4,5,3,4,6";
String[] array = data.split("(?<=\\G\\d+,\\d+,\\d+),"); //Magic :)
// to reveal magic see explanation below answer
for(String s : array){
System.out.println(s);
}
Ausgang:
0,0,1
2,4,5
3,4,6
Erklärung
\\d
bedeutet auf e Ziffer, gleich wie [0-9], wie 0
oder 3
\\d+
bedeutet eine oder mehr Ziffern wie 1
oder 23
\\d+,
bedeutet eine oder mehr Stellen mit Komma, nachdem es, wie 1,
oder 234,
\\d+,\\d+,\\d+
drei Zahlen mit Komma zwischen ihnen wie 12,3,456
\\G
bedeutet letztes Spiel akzeptieren, oder wenn es keine (bei dem ersten Verwendung) Anfang des Strings
(?<=...),
ist positive look-behind die Übereinstimmen Komma ,
, die vor ihm in (?<=...)
auch eine Schnur beschrieben hat
(?<=\\G\\d+,\\d+,\\d+),
so wird versucht Komma zu finden, die drei Zahlen, bevor sie hat, und diese Zahlen haben Äther Anfang der Zeichenfolge, bevor es (wie ^0,0,1
in Ihr Beispiel) oder zuvor übereinstimmendes Komma, wie 2,4,5
und 3,4,6
.
Auch im Fall, dass Sie dann andere Zeichen verwenden Ziffern, die Sie auch anderen Satz von Zeichen wie
\\w
die alphabetischen Zeichen werden übereinstimmen können, Ziffern und _
\\S
alles das ist nicht Leerraum
[^,]
alles, was nicht Komma ist
- ... und so weiter. Mehr Informationen in Pattern documentation
By the way, wird diese Form bei jeder 3. mit Split arbeiten, 5., 7., (und andere ungerade Zahlen) Komma, wie split("(?<=\\G\\w+,\\w+,\\w+,\\w+,\\w+),")
auf jedem 5. Komma aufgeteilt wird.
an jedem 2., 4., 6. So teilen, 8. (und der Rest der geraden Zahlen) Komma Sie +
mit {1,maxLengthOfNumber}
wie split("(?<=\\G\\w{1,3},\\w{1,3},\\w{1,3},\\w{1,3}),")
ersetzen müssen bei jeder 4. Komma zu trennen, wenn Zahlen maximal 3 Ziffern haben (0, 00 , 12, 000, 123, 412, 999).
an jedem 2. Komma So teilen Sie auch diese regex split("(?<!\\G\\d+),")
auf meinem previous answer so etwas wie die unten Versuchen
Haben Sie eine Funktion versucht, das Schreiben selbst, es zu analysieren/aufspalten? – Jashaszun
Ein Ansatz, der nützlich sein könnte, besteht darin, zuerst "0,0,1,2,4,5,3,4,6" in "0,0,1 | 2,4,5 | 3,4,6" zu ändern was ist ein ziemlich einfacher regulärer Ausdruck ersetzen Übersetzung. Oder verwenden Sie einfach einen Matcher direkt und gehen Sie ihn inkrementell [wie hier gezeigt] (http://stackoverflow.com/a/1277171/2246674). – user2246674
Zwei Möglichkeiten, die ich mir vorstellen kann: benutze 'indexOf' in einer while-Schleife oder spalte auf', 'und klebe die Ergebnisse dann wieder in Dreiergruppen zusammen. – flup