[英]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.