To się nazywa String#start_with?, a nie String#startswith: W Rubim nazwy metod boolowskich kończą się na, ?a słowa w nazwach metod są oddzielane za pomocą _. Nie jestem pewien, dokąd sposzedł, osobiście wolałbym String#starts_with?więcej niż faktycznyString#start_with?
Matz powiedział, że woli bez s, ponieważ wtedy wygląda to na drugą osobę w liczbie pojedynczej lub trzecią osobę w liczbie mnogiej.
Andrew Grimm,
5
Ciąg # start_with? został wprowadzony w Ruby 1.8.7 i 1.9.0 - dla starszych wersji możesz użyć jednej z wersji wyrażeń regularnych lub indeksowych wymienionych w innych odpowiedziach.
@AndrewGrimm Jedynym problemem jest to, że „ciąg znaków” jest liczbą trzecioosobową! (Ergo, „s” nie powinno było zostać usunięte).
user456584
41
Twój tytuł pytania i treść pytania są różne. Ruby nie ma start_with? metoda. Rails , który jest platformą Ruby , robi to jednak , jak stwierdza sepp2k. Zobacz jego komentarz do odpowiedzi na link do dokumentacji na jego temat.
Zawsze możesz jednak użyć wyrażenia regularnego:
ifSomeString.match(/^abc/)# SomeString starts with abc
^ oznacza „początek łańcucha” w wyrażeniach regularnych
zachowaj ostrożność przy tworzeniu wyrażeń regularnych z literałów łańcuchowych - pamiętaj, aby uniknąć specjalnych znaków. istnieje funkcja tego fi literały ciągów mogą być nieprzewidywalne
Radu Simionescu,
17
Jeśli dotyczy to projektu innego niż Rails, użyłbym String#index:
Byłoby to jednak bardziej obciążające pod względem wydajności, ponieważ start_with?metoda może po prostu potwierdzić, że początek łańcucha pasuje do podanego łańcucha - przetwarzając w ten sposób co najwyżej n znaków, gdzie n jest długością danego łańcucha - podczas gdy indexbędzie musiał szukać cały ciąg podstawowy. W przypadku awarii starts_with?zajmie jeden dostęp (na ciąg) i porównanie, podczas gdy indexprzejdzie prawie całą długość łańcucha podstawowego.
OldPeculier
5
Możesz użyć String =~ Regex. Zwraca pozycję pełnego dopasowania wyrażenia regularnego w ciągu.
Odpowiedzi:
To się nazywa
String#start_with?
, a nieString#startswith
: W Rubim nazwy metod boolowskich kończą się na,?
a słowa w nazwach metod są oddzielane za pomocą_
. Nie jestem pewien, dokąds
poszedł, osobiście wolałbymString#starts_with?
więcej niż faktycznyString#start_with?
źródło
Twój tytuł pytania i treść pytania są różne. Ruby nie ma start_with? metoda. Rails , który jest platformą Ruby , robi to jednak , jak stwierdza sepp2k. Zobacz jego komentarz do odpowiedzi na link do dokumentacji na jego temat.
Zawsze możesz jednak użyć wyrażenia regularnego:
^
oznacza „początek łańcucha” w wyrażeniach regularnychźródło
?
o tytuł)Jeśli dotyczy to projektu innego niż Rails, użyłbym
String#index
:źródło
start_with?
metoda może po prostu potwierdzić, że początek łańcucha pasuje do podanego łańcucha - przetwarzając w ten sposób co najwyżej n znaków, gdzie n jest długością danego łańcucha - podczas gdyindex
będzie musiał szukać cały ciąg podstawowy. W przypadku awariistarts_with?
zajmie jeden dostęp (na ciąg) i porównanie, podczas gdyindex
przejdzie prawie całą długość łańcucha podstawowego.Możesz użyć
String =~ Regex
. Zwraca pozycję pełnego dopasowania wyrażenia regularnego w ciągu.źródło
//
zamiast,%r
gdy to możliwe.