2015-05-09 9 views
5

Próbuję przekonwertować znaki nowej linii na przerwy. Ale z jakiegoś powodu nie mogę tego zrobić. Zrobiłem różne testy i wiem, że funkcja jest wykonywana, i że zmienna przekazana do funkcji jest zdecydowanie łańcuchem. To dziwne, że to nie działa. Ponieważ używam dokładnie tej samej funkcji dla podwójnych znaków ucieczki przed wysłaniem ich na serwer. Próbowałem wielu rzeczy i nie rozumiem, dlaczego to nie działa.Nie można przekształcić nowych linii w przerwy

console.log(ev); 
var parsedJSON = JSON.parse(ev.data); 
console.log('string that goes in function:' + parsedJSON.message); 
//typeof(parsedJSON.message); string 
var bericht = placeBreaks(parsedJSON.message); 
    function placeBreaks(str) { 
     return str.replace(/\r?\n/g, "<br />"); 
    } 
    console.log('string being returned: ' + bericht); 

json: { "data": 1431199838, "name": "root", "message": "test \ ntest"}

(index): 167 znaków, który idzie w funkcji: test \ ntest

(index): 173 placeBreaks powrotu: Test \ ntest

+1

Twój kod działa dla mnie; może \ n jest dosłownym, a właściwie nie łamaniem linii? Jak w js nie interpretuje go jako podział wiersza, ale dosłowny ukośnik odwrotny i n. – Daedalus

+2

To działało dla mnie w konsoli przeglądarki, ale dopiero po tym, jak zmieniłem go na '\\ n', więc myślę, że @Daedalus jest prawdopodobnie poprawny. – cyk

+1

Dzięki za odpowiedź, dzięki informacjom od was mogę pracować. I działaj, ale chciałbym przyjąć odpowiedź, która mogłaby wyjaśnić to bardziej indeptem; Dlaczego JS faktycznie czyta to jako ciąg literowy? Byłem z założenia, że ​​ciąg jest ciągiem. Nie wiedziałem, że JS analizuje coś tak dosłownie. Thx – DDaems

Odpowiedz

0

Jeśli wyjście jest test\ntest używając dosłownego "\\n" ciąg, zamiast nowej linii przerwy, należy użyć /\\n/g zamiast /\r?\n/g

0

można użyć

zastąpić \ n \ r z

spróbować tego w edytorze vim

%s/\\n/\r/gec 
Powiązane problemy