function scramble(a){a=a.split("");for(var b=a.length-1;0<b;b--){var c=Math.floor(Math.random()*(b+1));d=a[b];a[b]=a[c];a[c]=d}return a.join("")}
我已经获得了这个代码,通过调用警报来拼写单个单词似乎很有效:
alert(scramble('Like this.'));
这是我尝试做的事情:我希望能够在textarea中输入文本,用换行符分隔,并逐行随机加扰每个字符串。例如:
testing
scramble
words
输出如下内容:
sgnitte
rceamslb
dwros
有人可以帮我这么做吗?
答案 0 :(得分:1)
试试这段代码:
function scramble(a){a=a.split("");for(var b=a.length-1;0<b;b--){var c=Math.floor(Math.random()*(b+1));d=a[b];a[b]=a[c];a[c]=d}return a.join("")}
function scrambleText(){
var textArea = document.getElementById('TEXTAREA_ID');
var lines = textArea.value.split('\n');
for(var i = 0;i < lines.length;i++){
lines[i] = scramble(lines[i]).toUpperCase().split('').join(' ');
}
textArea.value = lines.join('\n');
}
首先获取文本区域元素,然后获取其值并将其拆分为数组。然后,您可以使用现有功能单独对每一行进行加扰。最后,所有要做的就是将数组转换回字符串并将加扰文本放回文本区域。
编辑:您可以使用toUpperCase
方法将所有字符转换为大写。您可以在上面的代码中看到split
join
的组合,可以在字符之间添加空格。
答案 1 :(得分:0)
function shuffle(str) {
var str = document.getElementById('txt');
var a = str.innerHTML;
var newArr = [];
var neww = '';
var text = a.replace(/[\r\n]/g, '').split(' ');
text.map(function(v) {
v.split('').map(function() {
var hash = Math.floor(Math.random() * v.length);
neww += v[hash];
v = v.replace(v.charAt(hash), '');
});
newArr.push(neww);
neww = '';
});
var x = newArr.map(v => v.split('').join(' ')).join('\n');
str.value = x.split('').map(v => v.toUpperCase()).join('');
}
<textarea cols='60' rows='8' id="txt">testing scramble words</textarea>
<button onclick='shuffle()'>Shuffle</button>