创建JavaScript字符串/单词加扰器

时间:2017-02-20 00:26:01

标签: javascript random

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

有人可以帮我这么做吗?

2 个答案:

答案 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的组合,可以在字符之间添加空格。

JSFiddle:https://jsfiddle.net/NotABlueWhale/u8wjuz1r/7/

答案 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 &#13;&#10;scramble &#13;&#10;words</textarea>
<button onclick='shuffle()'>Shuffle</button>