String.split verwendet Regular Expressions, auch müssen Sie kein zusätzliches Array für Ihren Split zuweisen.
Die Split-Methode gibt Ihnen eine Liste., das Problem ist, dass Sie versuchen, vordefinieren, wie viele Vorkommen Sie von einem Tab haben, aber wie würden Sie das wirklich wissen? Probieren Sie den Scanner oder den StringTokenizer und erfahren Sie, wie Splitting-Strings funktionieren.
Lassen Sie mich erklären, warum \ t nicht funktioniert und warum Sie \\\\
benötigen, um \\
zu entkommen.
Okay, also, wenn Sie Split verwenden, nimmt es tatsächlich eine Regex (Regulärer Ausdruck) und im regulären Ausdruck möchten Sie definieren, welche Zeichen zu teilen, und wenn Sie \ t schreiben, was eigentlich nicht bedeutet \t
und was willst du teilen nach ist \t
, richtig? Also, indem Sie einfach \t
schreiben, sagen Sie Ihrem Regex-Prozessor, dass "Hey geteilt durch den Buchstaben, der t entkommen ist" NICHT "Hey geteilt durch alle Charaktere, die wie \t
aussehen". Beachten Sie den Unterschied? Mit \ bedeutet, etwas zu entkommen. Und \
in Regex bedeutet etwas völlig anders als was Sie denken.
Das ist also, warum Sie diese Lösung verwenden müssen:
\\t
die Regex Prozessor zu sagen für \ t zu suchen. Okay, also warum brauchst du zwei davon? Nun, die erste \ entkommt der zweiten, was bedeutet, dass es so aussehen wird: \ t, wenn Sie den Text verarbeiten!
Lassen Sie uns jetzt sagen, dass Sie \
zu spalten suchen Na, dann würden Sie bleiben \\ aber sehen, das funktioniert nicht! weil \ versuchen wird, dem vorherigen Zeichen zu entkommen! Deshalb möchten Sie, dass die Ausgabe \\ ist und Sie daher \\ \\ haben müssen.
Ich hoffe wirklich, dass die obigen Beispiele Ihnen helfen zu verstehen, warum Ihre Lösung nicht funktioniert und wie Sie andere erobern!
Jetzt habe ich Ihnen diese answer vor, vielleicht sollten Sie beginnen, sie jetzt zu betrachten.
ANDERE METHODEN
StringTokenizer
Sie in die StringTokenizer aussehen sollte, ist es ein sehr nützliches Werkzeug für diese Art von Arbeit.
Beispiel
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Dies wird Ausgang
this
is
a
test
Sie die zweite Konstruktor für StringTokenizer verwenden das Trennzeichen zu setzen:
StringTokenizer(String str, String delim)
Scanner
Sie auch eine Scanner als einer der Kommentatoren verwenden könnte sagen dies wie diese
Beispiel
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
Der Ausgang
wäre etwas aussehen könnte
1
2
red
blue
Bedeutet, dass es das Wort "Fisch" ausschneiden wird und Ihnen den Rest geben wird "Fisch" als Trennzeichen.
examples taken from the Java API
So 'field1 \ tfield2 \ t \ tfield4' ergibt FIELD1 Sie, field2, field4 statt Feld1, Feld2, [null], field4? –
http://stackoverflow.com/questions/1630092/token-parsing-in-java/1630110 duplizieren? Dies passiert, wenn Sie die Antworten NICHT verstehen und nur den Code kopieren. –
Sie müssen kein neues String-Array zuweisen. 'String.split' weist trotzdem eine neue zu. – Joey