簡體   English   中英

JavaScript在多行中反轉單詞

[英]JavaScript reverse words in the multiple lines

這是我的代碼:

var text = document.getElementById('textarea').value.split(" ").reverse().join(" ");
document.getElementById('textarea').value = text;

僅在一行時有效:

LINE ONE > ONE LINE

但是當有多行時:

LINE ONE
LINE TWO

輸出為:

TWO ONE
LINE LINE

我想要這樣:

ONE LINE
TWO LINE

用換行符\\n分割數組,用Array#map迭代每一行,並將其反轉,然后使用\\n將各行重新連接起來:

 var text = document.getElementById('textarea').value; var result = text.split('\\n').map(function(line) { return line.split(" ").reverse().join(" "); }).join('\\n'); document.getElementById('textarea').value = result; 
 <textarea id="textarea"> LINE ONE LINE TWO </textarea> 

您需要在.split(" ")之前添加.replace( /\\n/g, " " ) .split(" ") 你會得到:

var text = document.getElementById('textarea').value.replace( /\n/g, " " ).split(" ").reverse().join(" ");

發生這種情況的原因是, document.getElementById('textarea').value.split(" ")創建的數組包含換行符。 例如,如果您在文本區域中輸入了以下內容:

 1 2 3 
 4 5 6
 7 8 9

您將返回的數組為[“ 9”,“ 8”,“6↵7”,“ 5”,“3↵4”,“ 2”,“ 1”]。 注意在[2]和[4]處的返回字符。

LINE ONE LINE TWO的第一個示例是反轉前的[“ TWO”,“ONE↵LINE”,“ LINE”]和反轉后的[“ TWO”,“ONE↵LINE”,“ LINE”]。 然后,當您將它們.join()返回到字符串中時,您會得到非常意外的兩條線。

.replace( /\\n/g, " " )會將這些換行符更改為空格,然后再將字符串分解為數組,從而獲得所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM