2014-09-18 16 views
7

Mam ciąg znaków, który wygląda mniej więcej tak:Ucieczka nowe linie z JS

"Line 1\nLine 2" 

Kiedy zadzwonić długość na nią, choć jest to jeden znak skrócie:

"Line 1\nLine 2".length // 13 

wygląda trochę bliżej :

"Line 1\nLine 2".charAt(6) 

Uważam, że \n jest zastępowany przez pojedynczego znaku, który wygląda tak:

" 
" 

Czy istnieje sposób, aby uciec z tej nowej linii do \n?

Odpowiedz

4

Ilekroć masz Javascript by zinterpretować ten ciąg, tym „\ n będzie renderowane jako znak nowego wiersza (który jest pojedynczym znakiem, stąd jego długość).

Aby użyć ciągu znaków jako dosłownego ukośnika odwrotnego-n, spróbuj uciec przed ukośnikiem odwrotnym za pomocą innego. Tak:

"Line 1\\nLine 2" 

Jeśli nie można tego zrobić, gdy ciąg jest tworzony, można włączyć jeden ciąg do drugiej z tym:

"Line 1\nLine 2".replace(/\n/, "\\n"); 

Jeśli można mieć wiele wystąpień newline, możesz pobrać je wszystkie naraz, wykonując globalne wyrażenie regularne, takie jak to:

"Line 1\nLine 2\nLine 3".replace(/\n/g, "\\n"); 
+0

Nie działa, jeśli system operacyjny używa innego znaku nowej linii. –

+0

Nie tego obserwuję. Czy możesz podać kroki, aby odtworzyć każdą porażkę, którą mógłbyś zauważyć? Środowisko, w którym działa Javascript, usuwa abstrakcyjne szczegóły implementacji konkretnego systemu operacyjnego. To prawda, że ​​metafora "przecieka" czasami, ale tak się nie dzieje w tym przypadku, zarówno w Firefoksie, jak i w węźle w systemach Windows i Linux. –

+0

Ta funkcja: https://github.com/boris-marinov/monad-transformers/blob/master/tutorial/p3.js#L153 –

4

\n to znak nowej linii. Możesz użyć "Line 1\\nLine 2", aby z niego uciec.

Należy pamiętać, że faktyczna reprezentacja nowej linii zależy od systemu i może być jeden lub dwóch znaków: \r\n, \n lub \r