ich eine Registerkarte bin mit (/ t) als Trennzeichen und ich weiß, gibt es einige leere Felder in meine Daten zB:Java StringTokenizer.nextToken() überspringt leere Felder
one->two->->three
Wo -> die Registerkarte gleich . Wie Sie sehen können, ist ein leeres Feld immer noch korrekt von Tabs umgeben. Die Daten werden mit einer Schleife gesammelt:
while ((strLine = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(strLine, "\t");
String test = st.nextToken();
...
}
Doch Java ignoriert diesen „leeren String“ und überspringt das Feld.
Gibt es eine Möglichkeit, dieses Verhalten zu umgehen und Java zu zwingen, in leere Felder zu lesen?
Verwenden 'string.split („\ t“)' statt. –
aus den Java-Dokumenten von String tokenizer "StringTokenizer ist eine Legacy-Klasse, die aus Kompatibilitätsgründen beibehalten wird, obwohl die Verwendung in neuem Code nicht empfohlen wird. Es wird empfohlen, dass diese Funktion die Split-Methode von String oder java.util.regex verwendet Paket stattdessen. " – Inquisitive
Nur ein Heads-up, das aussieht wie 'string.split (" \ t ")' wird am Ende keine abschließenden leeren Token zurückgeben. Wenn das wichtig ist, verwenden Sie 'string.split (" \ t ", -1)'. – Oded