Wie Entferne ich alle Zeichen in einem string, bis ein substring abgestimmt ist, in Ruby?
Sagen, ich habe einen string: Hey what's up @dude, @how's it going?
Möchte ich entfernen alle Zeichen vor@how's
.
InformationsquelleAutor oxo | 2011-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
oder mit der regex:
Lesen Sie über lookaround bei hier
sicher, behoben. (/ich habe Hinzugefügt wurden)
Keine Notwendigkeit für
gsub!
wennsub!
tun, richtig? Beachten Sie auch (nach meiner Antwort), müssen Sie die\A
Anker und/oderm
- flag im Fall der Zeichenfolge ein Zeilenumbruch-vor den text zu entsprechen.Danke! Sorry, ich weiß nicht, der Unterschied zwischen gsub und sub. Könnten Sie das erklären?
Suuuuper alt und Sie offensichtlich wissen wahrscheinlich, den Unterschied von jetzt, aber wäre schön zu sehen, die Antwort ändert sich für n00bs: gsub hat eine Globale suchen-und-ersetzen, während die sub wird beendet, nachdem das erste match. gsub könnte unerwartete Ergebnisse oder schlechte Leistung ist mehr Saiten.
InformationsquelleAutor Vasiliy Ermolovich
Verwenden String#Scheibe
0..s.index("@how")
?Er will, dass der Streifen alles, was vor dem Spiel, dass ist das gleiche zu sagen "alles nach dem Spiel".
Oh Hoppla, ich missverstanden, wie splice funktioniert. Ich dachte, es entfernt die Zeichenfolge im Ort, wie eine delete-Methode. Ich wusste nicht, dass es wieder die Gespleißte text für die Verwendung.
Ich sagte unten, um eine andere Antwort, aber ich Frage mich dass, da es sein könnte, in jedem Fall Variante von @how (z.B. @Wie @WIE @HoW etc), könnte es folgendermaßen gemacht: str.Scheibe(str.index("@[Hh][Oo][Ww]")..-1)
Wenn der Suchbegriff nicht angezeigt, die
index
zurücknil
. Also sollte er entweder nachnil
vor derslice
oder plan zur Rettung der Fehler, der kommt von der übergabe eines indexnil
zuslice
.InformationsquelleAutor Simone Carletti
Gibt es buchstäblich Dutzende von Möglichkeiten, dies zu tun. Hier sind die, die ich verwenden würde:
Wenn Sie wollen die Erhaltung der ursprünglichen Zeichenfolge:
Wenn Sie wollen mutieren die ursprüngliche Zeichenfolge:
...oder...
Müssen Sie die
\A
Anker am Anfang der Zeichenfolge, und diem
flag um sicherzustellen, dass Sie matching über mehrere Zeilen.Vielleicht einfachste aller für mutierend das original:
InformationsquelleAutor Phrogz
(String#slice
und(String#index
arbeiten gut, aber Blasen wird mit ArgumentError: Ungültiger Wert für Auswahl wenn die Nadel nicht im Heuhaufen.Mit
(String#partition
oder(String#rpartition
besser laufen könnte, in diesem Fall:InformationsquelleAutor Martin Vidner
Einfache Weise nur der Teil, der Sie interessiert.
Wenn Sie wirklich brauchen, um ändern Sie den string-Objekt, können Sie immer tun
s=s[...]
.InformationsquelleAutor Michael Kohl
Groß-und Kleinschreibung
Oder mit
scan()
m
Flagge auf, die letzten regex-match any Zeilenumbrüche Folgen können.InformationsquelleAutor kurumi
Können Sie auch direkt anrufen
[]
auch auf einen string(wieslice
)InformationsquelleAutor rubyprince