Ich habe einen String in Ruby:
satz = "Mein Name ist Robert"
Wie kann ich einfach ein beliebiges Wort in diesem Satz ersetzen, ohne komplexen Code oder eine Schleife zu verwenden?
Ich habe einen String in Ruby:
satz = "Mein Name ist Robert"
Wie kann ich einfach ein beliebiges Wort in diesem Satz ersetzen, ohne komplexen Code oder eine Schleife zu verwenden?
sentence.sub! 'Robert', 'Joe'
Verursacht keine Ausnahme, wenn das ersetzte Wort nicht im Satz enthalten ist (die Variante []=
wird).
Oben wird nur die erste Instanz von "Robert" ersetzt.
Verwenden Sie zum Ersetzen aller Instanzen gsub
/gsub!
(d.h. "globale Ersetzung"):
sentence.gsub! 'Robert', 'Joe'
Oben werden alle Instanzen von Robert durch Joe ersetzt.
Wenn Sie mit natürlichsprachigem Text umgehen und ein Wort ersetzen müssen, nicht nur einen Teil einer Zeichenkette, müssen Sie einen Hauch von regulären Ausdrücken zu Ihrem gsub hinzufügen, da eine einfache Textersetzung zu katastrophalen Ergebnissen führen kann:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
Reguläre Ausdrücke haben Wortgrenzen, wie z. B. \b
, das den Anfang oder das Ende eines Wortes entspricht. Also,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
In Ruby, im Gegensatz zu einigen anderen Sprachen wie Javascript, sind Wortgrenzen UTF-8-kompatibel, sodass Sie es für Sprachen mit nicht lateinischen oder erweiterten lateinischen Alphabeten verwenden können:
' , '.gsub(/\b\b/, '')
=> " , "
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Ersetzen auf welche Weise? Ersetzen Sie ein beliebiges Wort (Wort #2) oder ein bestimmtes Wort (
my
)?0 Stimmen
Vielen Dank für Ihre kurze, einfache und nützliche Frage. Es hat mir geholfen, eine Lösung zu finden, um Hashtags in meiner Ansicht zu gestalten.