2016-03-17 95 views
1

我在textarea中有一個文本,並使用.val()屬性獲取值。我想刪除linebreaks(這是雙打空間)?在javascript中刪除換行符

我嘗試使用.replace

sampleText = sampleText.replace(/(\r\n|\n|\r)/gm,""); 

但它並沒有給我正確的解決方案。從我的textarea enter image description here

示例文本,當我試圖在.replace(),它會做這樣的

enter image description here

我如何刪除樣品2和樣品3之間的空間?它應該是這樣.. enter image description here

+0

什麼'sampleText.split(/ \ r?\ n /)。filter(String).join(「\ n」)' – dandavis

+0

您可以將正則表達式簡化爲'sampleText.replace(/ [\ n \ r] {2,}/gm,'\ n')' – sideroxylon

回答

2

分由新線,篩選出一個空行,最後加入

sampleText = sampleText.split(/\n|\r/).filter(function(value){ 
    return value.trim().length > 0; 
}).join("\n"); 

var sampleText = "Sample 1\nSample 2\n\nSample 3"; 
 
sampleText = sampleText.split("\n").filter(function(value){ 
 
     return value.trim().length > 0; 
 
    }).join("\n"); 
 
document.write('<pre>'+sampleText+'</pre>');

+0

'\ r'怎麼辦?那麼'\ r \ n'呢?您需要考慮操作系統的差異。 – Tschallacka

+0

'/ \ r?\ n /'是全部命中它們的正確組合,但是如果您僅使用鍵盤,windows上的chome只會在textareas中使用「\ n」。 – dandavis

+0

非常好。我從來沒想過這點。非常感謝。 –

0

你可以做兩個換行符的換行S:

var sampleText = "Sample1\nSample2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSample3"; 
 
sampleText = sampleText.replace(/(\n){2,}/gm, "\n"); // matches 2 linebreaks to infinity; 
 

 
document.querySelector('pre').innerHTML = sampleText;
<pre></pre>

,或只與.join()同時用.split()創建一個數組出字符串:

var sampleText = "Sample1\nSample2\n\n\n\n\n\n\n\n\n\nSample3".split(/\n{2,}/gm).join('\n') 
 

 
document.querySelector('pre').innerHTML = sampleText;
<pre></pre>

+0

\ r會破壞你的代碼 – Tschallacka

2

您需要將通過加倍使用組篩選中的+符號僅包含th e雙重出現,並且不要用空字符串替換它們,而是用新的換行符替換它們。
有關的加號,我建議閱讀http://www.regular-expressions.info/repeat.html

這樣每雙occurence將由單個出現時被替換更多信息,這是你想要我猜

var sampleText = "Sample1\n\nSample2\n\r\n\r\r\r\nSample3"; 
 
document.write('<pre>Before:\n'+sampleText); 
 

 

 
// The plus makes sure the matched pattern is repetitive and keeps replacing the doubles 
 
sampleText = sampleText.replace(/(\r\n|\n|\r)+/gm,"\r\n"); 
 

 
document.write('\n\nAfter:\n'+sampleText+'</pre>');

+0

謝謝。但是這隻能做單個休息......而不是多個休息。像2個或更多的中斷.. –

+0

修復了我的代碼,它現在應該可以正常工作:-) – Tschallacka