2016-04-15 2 views
0

Also im Wesentlichen, was ich versuche zu tun ist Schleife durch jedes Wort in einem HTML-Dokument und ersetzen Sie den ersten Buchstaben jedes Wortes mit "A", der zweite - vorletzte Brief mit 'b' und der letzte Buchstabe mit 'c', ersetzt das Wort vollständig. Ich bin nicht sicher, ob reguläre Ausdrücke der Weg sind, dies zu tun (sollte ich stattdessen for-Schleifen verwenden und jeden Charakter überprüfen?), Aber ich werde trotzdem fragen.Regex bekommen den mittleren Abschnitt von jedem Wort Javascript

Derzeit ich tue:

document.body.innerHTML = document.body.innerHTML.replace(/\b(\w)/g, 'A'); den ersten Buchstaben jedes Wortes jedes Wortes

document.body.innerHTML = document.body.innerHTML.replace(/\w\b/g, 'c'); zu bekommen den letzten Brief zu bekommen

Also, wenn ich die Schnur hatte: Lorem ipsum dolor sit amet ich kann mache es derzeit Aorec Apsuc Aoloc Aic Amec, aber ich würde gerne Abbbc Abbbc Abbbc Abc Abbc in Javascript tun.

Jede Hilfe wird sehr geschätzt - reguläre Ausdrücke verwirren mich wirklich.

+1

warum Sie nehmen nicht nur die Länge jedes Wortes, bauen das neue so viel bbb mit je nach Bedarf? –

+0

@ rock321987 hmmm ja hatte nicht darüber - ich werde wahrscheinlich durchlaufen und entfernen Sie die Wörter mit 3 oder weniger Zeichen – TomHill

+0

@ RaphaelMüller - ja wahrscheinlich sollte diese Route gegangen sein (daher meine Erwähnung der Schleife in der Frage), aber ich Ich habe versucht, Regex von Treehouse zu lernen und war daran interessiert, wie du es machen würdest :) – TomHill

Antwort

4

Sie haben es fast geschafft.

str = "Lorem ipsum dolor sit amet" 
 

 
str = str 
 
    .replace(/\w/g, 'b') 
 
    .replace(/\b\w/g, 'A') 
 
    .replace(/\w\b/g, 'c') 
 

 
document.write(str);

Fancier Ersetzungsregeln können mit einer Callback-Funktion behandelt werden, z.B.

str = "Lorem ipsum dolor sit amet" 
 

 
str = str.replace(/\w+/g, function(word) { 
 
    
 
    if (word === "dolor") 
 
    return word; 
 
    
 
    return 'A' + 'b'.repeat(word.length - 2) + 'c'; 
 

 
}); 
 

 
document.write(str);

+0

Danke dafür, das bezieht sich nicht direkt auf meine Frage, sondern nur aus Interesse, wenn ich "dolor" ausschließen wollte 'Wie würde ich das in einer mehrstufigen Regex-Anweisung tun? – TomHill

+1

@TomHill: aktualisiert ... – georg

Verwandte Themen