Es heißt String#start_with?nicht String#startswith: In Ruby enden die Namen von booleschen Methoden mit ?und die Wörter in Methodennamen werden durch ein getrennt _. sIch bin mir nicht sicher, wohin das ging, ich persönlich würde es String#starts_with?dem tatsächlichen vorziehenString#start_with?
Matz hat gesagt, er bevorzuge ohne das s, da es dann wie eine zweite Person Singular oder eine dritte Person Plural aussieht.
Andrew Grimm
5
String # start_with? wurde in Ruby 1.8.7 und 1.9.0 eingeführt - für ältere Versionen möchten Sie möglicherweise eine der in anderen Antworten genannten Regex- oder Indexversionen verwenden.
@ AndrewGrimm Das einzige Problem ist, dass "eine Zeichenfolge" die dritte Person Singular ist! (Ergo, 's' sollte nicht fallen gelassen worden sein).
user456584
41
Ihr Fragentitel und Ihr Fragetext sind unterschiedlich. Ruby hat keine Starts mit? Methode. Rails , ein Ruby- Framework , tut dies jedoch , wie in sepp2k angegeben. Siehe seinen Kommentar zu seiner Antwort für den Link zur Dokumentation dafür.
Sie können jedoch immer einen regulären Ausdruck verwenden:
ifSomeString.match(/^abc/)# SomeString starts with abc
^ bedeutet "Anfang der Zeichenfolge" in regulären Ausdrücken
Vorsicht beim Erstellen von Regexen aus String-Literalen - denken Sie daran, keine Sonderzeichen zu verwenden. Es gibt eine Funktion dafür, dass die Zeichenfolgenliterale unvorhersehbar sein können
Radu Simionescu
17
Wenn dies für ein Nicht-Rails-Projekt ist, würde ich verwenden String#index:
Dies wäre jedoch start_with?insofern leistungsintensiver, als eine Methode einfach bestätigen kann, dass der Anfang der Zeichenfolge mit der angegebenen Zeichenfolge übereinstimmt, wodurch höchstens n Zeichen verarbeitet werden, wobei n die Länge der angegebenen Zeichenfolge ist, während indexgesucht werden muss die gesamte Basiszeichenfolge. In einem Fehlerfall starts_with?wird ein Zugriff (pro Zeichenfolge) und ein Vergleich durchgeführt, während indexfast die gesamte Länge der Basiszeichenfolge ausgeführt wird.
OldPeculier
5
Sie können verwenden String =~ Regex. Es gibt die Position der vollständigen Regex-Übereinstimmung in der Zeichenfolge zurück.
Antworten:
Es heißt
String#start_with?
nichtString#startswith
: In Ruby enden die Namen von booleschen Methoden mit?
und die Wörter in Methodennamen werden durch ein getrennt_
.s
Ich bin mir nicht sicher, wohin das ging, ich persönlich würde esString#starts_with?
dem tatsächlichen vorziehenString#start_with?
quelle
Ihr Fragentitel und Ihr Fragetext sind unterschiedlich. Ruby hat keine Starts mit? Methode. Rails , ein Ruby- Framework , tut dies jedoch , wie in sepp2k angegeben. Siehe seinen Kommentar zu seiner Antwort für den Link zur Dokumentation dafür.
Sie können jedoch immer einen regulären Ausdruck verwenden:
^
bedeutet "Anfang der Zeichenfolge" in regulären Ausdrückenquelle
?
in Frage Titel)Wenn dies für ein Nicht-Rails-Projekt ist, würde ich verwenden
String#index
:quelle
start_with?
insofern leistungsintensiver, als eine Methode einfach bestätigen kann, dass der Anfang der Zeichenfolge mit der angegebenen Zeichenfolge übereinstimmt, wodurch höchstens n Zeichen verarbeitet werden, wobei n die Länge der angegebenen Zeichenfolge ist, währendindex
gesucht werden muss die gesamte Basiszeichenfolge. In einem Fehlerfallstarts_with?
wird ein Zugriff (pro Zeichenfolge) und ein Vergleich durchgeführt, währendindex
fast die gesamte Länge der Basiszeichenfolge ausgeführt wird.Sie können verwenden
String =~ Regex
. Es gibt die Position der vollständigen Regex-Übereinstimmung in der Zeichenfolge zurück.quelle
//
statt%r
wann immer möglich.