Wie teilt eine Zeichenfolge mit durch Tabulatoren und Zeilenumbrüche?
Bekam ich eine tab-getrennte Datei, die ich aufteilen will durch Tabulatoren und Zeilenumbrüche, wo eine Registerkarte repräsentiert das Trennzeichen zwischen Feldern und einem newline stellt ein neues Objekt erzeugt werden soll. Die Datei kann wie folgt Aussehen:
Peter\[email protected]\tpeterpassword\nBob\[email protected]\tbobbypassword\n...
wo \t
ist ein Register, und \n
ist ein Zeilenumbruch.
Möchte ich ermöglichen das hochladen dieser Datei auf meinem Programm, das erstellt einen neuen Benutzer für jede Zeile in der Datei mit den Feldern auf der Linie. Aber wie kann ich die Verwendung von zwei Token - beide tab und newline? Mein code würde wie folgt Aussehen:
String everything = "";
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(file.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
//now create object according to the string
StringTokenizer st = new StringTokenizer(line , "\t");
String name = st.nextToken();
String email = st.nextToken();
String password = st.nextToken();
User.createNewUser(name, email, password);
sb.append(line);
sb.append('\n');
line = br.readLine();
}
everything = sb.toString();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Everything: " + everything);
Würden Sie code wie oben funktioniert?
- Testen Sie es und finden Sie heraus.
- und zur info: StringTokenizer können mehrere Token.
- Warum versuchst du es nicht und lass es uns wissen!
- Sie können auch split in ein array, wenn Sie wollen, und split mit regex. String[]tokens = etwas.split("\n|\\\t");
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde eine
String.split("\\n")
für jede Zeile. Dann haben Sie alle Informationen die Sie benötigen für jeden Benutzer. WeitereString.split("\\t")
und bauen Ihr Objekt mit dem resultierenden array.Aus der Java-Doc:
StringTokenizer ist ein Vermächtnis Klasse, beibehalten aus Gründen der Kompatibilität obwohl seine Verwendung wird abgeraten, in die der neue code. Es wird empfohlen, dass alle, die diese Funktionalität verwenden Sie die split-Methode der String oder java.util.regex-Paket statt.
http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html