2017-02-20 7 views
0
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("")} 

Ich habe diesen Code erhalten, die durch den Aufruf eines Alarm in Scrambling ein einziges Wort wirksam zu sein scheint:Erstellen eines JavaScript-String/Wort Scrambler

alert(scramble('Like this.')); 

Hier ist, was ich versuche zu tun though: Ich möchte in der Lage sein, Text in ein Textfeld einzufügen, getrennt durch Zeilenumbrüche, und jede Zeile nach dem Zufallsprinzip zu sortieren. Zum Beispiel:

testing 
scramble 
words 

ausgeben würde, so etwas wie:

sgnitte 
rceamslb 
dwros 

Kann mir jemand helfen, in dies zu tun?

Antwort

1

diesen Code Versuchen:

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'); 
} 

Zuerst Sie den Textbereich Element erhalten, dann wird ihr Wert, den Sie erhalten und teilen, dass in ein Array für Zeile. Sie können dann jede Zeile einzeln mit Ihrer bestehenden Funktion krabbeln. Zuletzt müssen Sie das Array nur noch in eine Zeichenfolge konvertieren und den verschlüsselten Text zurück in den Textbereich bringen.

EDIT: Sie können die toUpperCase Methode verwenden, um alle Zeichen in Großbuchstaben umzuwandeln. Die Kombination aus splitjoin, wie Sie im obigen Code sehen können, kann verwendet werden, um Leerzeichen zwischen den Zeichen hinzuzufügen.

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

+0

Das funktionierte perfekt. Du bist sehr schnell. Wissen Sie außerdem, wie ich es so mache, dass es alles in Großbuchstaben umwandelt und zwischen jedem konvertierten Buchstaben ein Leerzeichen setzt? Beispiel Eingabe: Tests scramble Worten Beispiel Ausgang: S G N I T T E R C E A M S L B D W R O S – Craig

+0

Sicher. Ich habe meine Antwort aktualisiert, um diese Änderungen widerzuspiegeln. – NotABlueWhale

+0

@Kinduser Du bist der Beste. Vielen Dank! – Craig

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>