Hello&很高兴和你们在一起。
我使用本网站提供的内置函数.split('').reverse().join('')
成功地反转了数组,但我需要按顺序保持数字,而不是反转。是否有任何事情要做或要添加以使其排除数字被反转,或仅在反转完整数组后重新反转数字?
这是数组翻转功能,
function reversey(){
var text = document.getElementById('input').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').value = text;}
输入'是文本字段的ID。 感谢您的帮助,感谢您提前。
实施例
输入: Hello World 123.45
所需的输出: 123.45 dlroW olleH
当前输出: 54.321 dlroW olleH
答案 0 :(得分:2)
"hello 123.45".split(/([^\d\.])/).reverse().join('')
答案 1 :(得分:1)
我认为您正在寻找array map
function。它允许您在重新split
到结果字符串之前分别处理join
ted字符串的每个部分。你可以做点什么
text.split(/\r?\n/).map(function(line) {
return line.split(/(\d*\.?\d+)/).map(function(wordOrNum, i) {
if (i%2) // number (with odd index in the alternating list)
return wordOrNum;
else // word
return wordOrNum.split('').reverse().join('');
}).reverse().join('');
}).join("\n")
或者,将每一行拆分为单个字符或整数的标记,然后可以反转其序列:
return line.match(/(\d*\.?\d+|.)/g).reverse().join('')
答案 2 :(得分:1)
首先,我们定义标准的字符串反转函数。
function reverse(str) { return str.split('').reverse().join(''); }
然后,
function reversey(str) { // Reverse a string
return str // by taking it and
.split(/\s+/) // splitting it into words
.reverse() // and reversing the word order
.map(function(word) { // and then changing each word
return /^[0-9\.]+$/.test(word) ? // if it's a number
word : // into itself
reverse(word); // or otherwise into its reverse
})
.join(" ") // put Humpty Dumpty back together
;
}
> reversey("Hello World 123.45")
"123.45 dlroW olleH"
使用它来转换DOM元素:
function reverse_input(id){
var element = document.getElementById(id);
element.value = reversey(element.value);
}
reverse_input('input')
注意:上面给出的reverse
的实现不一定是在性能方面反转字符串的最佳方法。如果性能问题,可能会有更好的选择。