2017-02-22 37 views
-1

這裏是我到目前爲止有:https://jsfiddle.net/CRASNY/dms3tvjj/6/精煉我的JavaScript文字擾

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(){ 
console.log(1); 
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'); 
} 

document.getElementById('BUTTON_ID').onclick = scrambleText; 

你可以看到,這需要輸入和打亂它,改變爲大寫的情況,並把每個字母之間的空間。但是,對於多字長的字符串來說,這並不起作用。

例如,This sentence is a test目前被炒到類似S T E S A I S S E C I E T E T H N T N

我想達到什麼樣的效果:一個字符串的每個單詞都是單獨加密的,並且由~鍵包裝。我還希望輸入中顯示輸入,在加擾後的文本後用|分隔。 This sentence is a test的示例輸出將是~H T S I~ ~E C N T E S N E~ ~S I~ ~A~ ~T T S E~|This sentence is a test。任何人都可以指導我如何做到這一點?

回答

1

您可以添加分隔詞和每個打亂,最後使用度tidle人物加入他們的另一個功能:

function scramblePhrase(_phrase) { 
    var words = _phrase.split(/\s+/); 
    words = words.map(function(_word) { 
     return scramble(_word); 
    }); 
    return words.join('~').toUpperCase(); 
} 
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("")} 

從你scrambleText()功能,來電scramblePhrase()而不是scramble()

下面是修改後的版本,你在的地方與上述撥弄:https://jsfiddle.net/dms3tvjj/8/

0

要保留原始的形式實現的,你將不得不增加迭代的附加層來處理的話分開你的案件。

function scrambleText(){ 
    var textArea = document.getElementById('TEXTAREA_ID'); 
    var lines = textArea.value.split('\n'); 

    for (var j = 0; j < lines.length; j++){ 
    var originalLine = lines[j]; 
    var words = lines[j].split(' '); 
    for(var i = 0;i < words.length;i++){ 
     words[i] = '~' + scramble(words[i]).toUpperCase().split('').join(' ') + '~'; 
    } 
    lines[j] = words.join('\n') + '|' + originalLine; 
    } 

    textArea.value = lines.join('\n'); 
} 

考慮到,同時增加了一個進一步水平進入迭代不會造成混亂,進一步增加水平或更加宏偉的數據操作扔進垃圾桶將很快導致代碼難以理解。查看techfoobar的答案,找出可能的方法來重新組織代碼以獲得更好的可讀性。 在這裏查看舉例:https://jsfiddle.net/dms3tvjj/9/