Czy Ruby ma wbudowaną some_string.starts_with("abc")metodę?
Czy Ruby ma wbudowaną some_string.starts_with("abc")metodę?
Odpowiedzi:
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?
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:
if SomeString.match(/^abc/)
# SomeString starts with abc
^ oznacza „początek łańcucha” w wyrażeniach regularnych
?o tytuł)
Jeśli dotyczy to projektu innego niż Rails, użyłbym String#index:
"foobar".index("foo") == 0 # => true
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.