2010-12-27 22 views
7

Ich habe eine TXT-Textdatei, die einige Zeilen enthält. Ich lade das contain mit dem RequestBuilder-Objekt, und teilen Sie die responseText mit words = String.split (" \ n "); aber ich frage mich, warum das Ergebnis enthält den "\ n" Teil .. Zum Beispiel meines Text:Strange String.split (" n") Verhalten

abc 
def 
ghi 

das Ergebnis ist,

words[0] = "abc\n" 
words[1] = "def\n" 
words[2] = "ghi\n" 

Jede Hilfe sehr geschätzt wird. Danke im Voraus.

+2

Sind Sie sicher, dass Ihre Zeilen mit '\ n' abgeschlossen sind? Sie können mit '\ r \ n' oder etwas anderem enden. – Asaph

+0

ohh es kann möglich sein, können Sie mir sagen, wie kann ich es überprüfen? Was entsteht, wenn ich in meinem Texteditor Enter drücke? – amateurs

+0

Sie können immer .trim() das Ergebnis und ich denke, es wird entfernen, was dort ist. –

Antwort

8

Windows-Zeilenumbrüche ("\r\n") sollte keinen sichtbaren Unterschied, um Ihre Ergebnisse machen, noch sollten Sie müssen dem regulären Ausdruck entkommen, den Sie an String.split() übergeben.

Hier Beweis sowohl die oben mit str.split("\n"): http://ideone.com/4PnZi

Wenn Sie zu tun haben Windows-Wagen zurück, obwohl, sollten Sie (obwohl streng genommen nicht notwendig) verwenden str.split("\r\n"): http://ideone.com/XcF3C

+0

Großartig! Deine Antwort macht alles klar, aber im Texteditor, wie kann ich Text machen, der mit \ n endet? so ist das nur in windows? – amateurs

+0

@amateurs Viele Windows-Anwendungen verwenden '\ r \ n', um eine Zeile zu beenden, während Linux und andere Anwendungen' \ n' verwenden. Wenn Sie die Zeilenumbrüche ('\ r') in Java entfernen möchten, verwenden Sie' str.replaceAll ("\ r \ n", "\ n") '. Wenn Sie eine Windows-Anwendung suchen, die keine Wagenrückläufe verwendet, müssen Sie zuerst eine andere Person fragen. – marcog

+0

in Ordnung! Ich hab es geschafft. Danke Marcog! : D – amateurs

15

Versuchen Sie mit string.split("\\n+"). Oder noch besser - split("[\\r\\n]+")

+0

+1 yep, das ist der richtige Weg. – Nishant

+6

aber würde das nicht auch leere Zeilen überspringen? (vielleicht gewünscht) –

+0

Dies ist nicht notwendig, siehe meine Antwort. – marcog

2

Wenn Split verwendet regex Sie verwenden sollten „\\ n“ anstelle von „\ n“

+2

Split verwendet RegEx. – Powerlord

+0

cool. Vielen Dank. Ich wollte mich nicht auf das Gedächtnis verlassen, ohne das Dokument zu überprüfen. Also, lassen Sie dies OP zu sehen. :) – Nishant

+0

Obwohl 'String.split()' eine Regex benötigt, ist dies nicht notwendig. – marcog

0

Sie können auch wollen in Betracht ziehen String[] lines = text.split("\\\\n");