343 Stimmen

Ersetzen von Wörtern in einer Zeichenfolge - Ruby

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?

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.

575voto

srcspider Punkte 10579
sentence.sub! 'Robert', 'Joe'

Verursacht keine Ausnahme, wenn das ersetzte Wort nicht im Satz enthalten ist (die Variante []= wird).

Wie ersetzt man alle Instanzen?

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.

174voto

Hnatt Punkte 5467

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/, '')
=> "  ,  "

65voto

Mithun Sasidharan Punkte 20254

Sie können es auf folgende Weise versuchen:

satz["Robert"] = "Roger"

Dann wird der Satz:

satz = "Mein Name ist Roger" # Robert wird durch Roger ersetzt

51voto

Sean Hill Punkte 14678

Zunächst deklarieren Sie den Typ in Ruby nicht, daher benötigen Sie nicht das erste string.

Um ein Wort in einem String zu ersetzen, tun Sie dies: sentence.gsub(/match/, "replacement").

CodeJaeger.com

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.

Powered by:

X