2015-04-23 31 views
1

我正在尋找最簡單的未混淆的代碼行來反轉jquery中的多行字符串。例如,最快的方法來翻轉jquery中的多行文本

ABCD

edfg

HIJK

應該成爲

DCBA

gfde

kjih

一個極其複雜的例子看起來像:

function fliptext() { 
    var text = document.getElementById('input_output').value; 
    text = text.replace(/\r/gi, ''); 
    text = text.replace(/([^a-z 0-9\n])/gi, ' $1 '); 
    text = text.split('\n').reverse().join('\n'); 
    text = text.split('').reverse().join(''); 
    text = text.replace(/ ([^a-z 0-9\n]) /gi, '$1'); 
    document.getElementById('input_output').value = text; 
} 

有什麼更好的辦法?

回答

-2

CSS:

.flipped { 
    transform: scale(-1, 1); 
} 

的jQuery:

$("#some_div").addClass("flipped"); 
+0

這將是一個不錯的笑話/鑽空子PPCG。那個確實會翻轉一個元素,但它不會翻轉值/ innerHTML。這些都可能是該代碼的用例。 –

4

你可以這樣做;

text = text.split('\n').map(function(el) {return el.split('').reverse().join('')}).join('\n'); 

首先,我們通過拆分的換行文本,並獲得線的陣列,然後反轉的每一行,然後再加入以新行陣列(「\ n」),並獲得一個字符串。

+0

不應該是'el.split('')。reverse()'? –

+0

是的,只是修復它。 – keune

+0

@keune這與編寫'text.split('')。reverse()。join('')' – andlrc

0
var el = document.getElementById('input_output'); 
var value = el.value; 
// Split on newline and iterate over each line 
// this will preserve the the line numbers. 
var output = value.split('\n').map(function(line) { 
    // Split on each character this will create an array 
    // like this: "abc" -> ["a", "b", "c"] 
    // .reverse() will reverse the array -> ["c", "b", "a"] 
    // .join will make the array a string again. 
    return line.split('').reverse().join(''); 
}).join('\n'); 
1

這裏是最短的一個:

var text = "abcdef\n123\n789"; 
text = text.split('').reverse().join('').split("\n").reverse().join("\n"); 
相關問題