2012-03-24 18 views

Odpowiedz

43

Można użyć .replace() funkcję:

words = words.replace(/\n/g, " "); 

pamiętać, że w wyrażeniu regularnym potrzebna jest flaga g, aby uzyskać zamianę do zastąpienia wszystkie nowe linie mają raczej przestrzeń niż tylko pierwszą.

demo robocza: http://jsfiddle.net/jfriend00/VrAw2/

+1

Dlaczego upadły? Gracze, którzy nie oferują żadnych wyjaśnień, nie pomagają nam ulepszać naszych odpowiedzi (co przynosi korzyści całej społeczności). – jfriend00

0

Niektóre proste rozwiązanie będzie wyglądać

words.replace(/(\n)/g," "); 
+0

Czy rzeczywiście spróbować? Wydaje się, że nie działa to dla mnie: http://jsfiddle.net/jfriend00/Zn4WE/1 – jfriend00

+0

tak to działa teraz –

+1

Dlaczego parens w '/ (\ n) /'? Nie są potrzebne. – jfriend00

2

Kod: (stałe)

var new_words = words.replace(/\n/g," "); 
+0

Czy rzeczywiście tego spróbowałeś? Nie działa to dla mnie: http://jsfiddle.net/jfriend00/Zn4WE/1/ – jfriend00

+0

Nadal potrzebuje flagi 'g' do poprawnego działania. –

+0

@ jfriend00 @Madmartigan TRUE. Czasami oczywiste jest pomijane ... (bez flagi '/ g' zastępowane jest tylko pierwsze wystąpienie) –

18

W przypadku istnieją stwardnienie podziały wiersza (symbol nowej linii), a jeśli nie może być zarówno \r lub \n i musisz zastąpić wszystkie kolejne linie podziału z jedną spację, użyj

var new_words = words.replace(/[\r\n]+/g," "); 

Zobacz regex demo

The /[\r\n]+/g środki:

  • [\r\n] - pasuje do powrotu karetki lub znak nowego wiersza ...
  • + - jeden lub więcej razy (konsekutywne linebreaks są dopasowane)
  • /g - znajdź i zamień wszystkie wystąpienia w podanym ciągu.

var words = "car\r\n\r\nhouse\nhome\rcomputer\ngo\n\nwent"; 
 
document.body.innerHTML = "<pre>OLD:\n" + words + "</pre>"; 
 
var new_words = words.replace(/[\r\n]+/g," "); 
 
document.body.innerHTML += "<pre>NEW:\n" + new_words + "</pre>";

Powiązane problemy