2015-04-23 59 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"); 
相关问题