Это называется String#start_with?, а не String#startswith: в Ruby имена методов логического вывода заканчиваются на, ?а слова в именах методов разделяются знаком _. Не уверен, куда sпошел, лично я бы предпочел String#starts_with?реальныйString#start_with?
Мац сказал, что он предпочитает без s, так как это выглядит как второе лицо единственного числа или третьего лица множественного числа.
Эндрю Гримм
5
Строка # start_with? был введен в ruby 1.8.7 и 1.9.0 - для более старых версий вы можете использовать одну из версий регулярного выражения или индекса, упомянутых в других ответах.
Хэмиш Даунер
3
в Rails вы можете использовать String # start_with?
@AndrewGrimm Единственная проблема в том, что «строка» - это третье лицо единственного числа! (Ergo, 's' не должен был быть отброшен).
user456584
41
Ваше название вопроса и ваше тело вопроса отличаются. Рубин не имеет стартов с? метод. Однако Rails , который является фреймворком Ruby , делает , как утверждает sepp2k. Смотрите его комментарий к его ответу для ссылки на документацию для него.
Вы всегда можете использовать регулярное выражение, хотя:
ifSomeString.match(/^abc/)# SomeString starts with abc
^ означает «начало строки» в регулярных выражениях
будьте осторожны при построении регулярных выражений из строковых литералов - не забывайте избегать специальных символов. есть функция для того, чтобы строковые литералы могли быть непредсказуемыми
Раду
17
Если это для не-Rails проекта, я бы использовал String#index:
Это, однако, будет более ресурсоемким, так как start_with?метод может просто подтвердить, что начало строки соответствует заданной строке - таким образом обрабатывать не более n символов, где n - длина данной строки - тогда как indexпридется искать вся базовая строка. В случае сбоя starts_with?потребуется один доступ (на строку) и сравнение, тогда как indexбудет проходить почти полная длина базовой строки.
OldPeculier
5
Вы можете использовать String =~ Regex. Возвращает позицию полного соответствия регулярному выражению в строке.
Ответы:
Это называется
String#start_with?
, а неString#startswith
: в Ruby имена методов логического вывода заканчиваются на,?
а слова в именах методов разделяются знаком_
. Не уверен, кудаs
пошел, лично я бы предпочелString#starts_with?
реальныйString#start_with?
источник
Ваше название вопроса и ваше тело вопроса отличаются. Рубин не имеет стартов с? метод. Однако Rails , который является фреймворком Ruby , делает , как утверждает sepp2k. Смотрите его комментарий к его ответу для ссылки на документацию для него.
Вы всегда можете использовать регулярное выражение, хотя:
^
означает «начало строки» в регулярных выраженияхисточник
?
в названии вопроса)Если это для не-Rails проекта, я бы использовал
String#index
:источник
start_with?
метод может просто подтвердить, что начало строки соответствует заданной строке - таким образом обрабатывать не более n символов, где n - длина данной строки - тогда какindex
придется искать вся базовая строка. В случае сбояstarts_with?
потребуется один доступ (на строку) и сравнение, тогда какindex
будет проходить почти полная длина базовой строки.Вы можете использовать
String =~ Regex
. Возвращает позицию полного соответствия регулярному выражению в строке.источник
//
вместо того, чтобы по%r
возможности.