Kebetulan, apakah Anda bertanya tentang Ruby, atau tentang Rails?
Andrew Grimm
Jawaban:
339
Disebut String#start_with?, bukan String#startswith: Di Ruby, nama metode boolean-ish diakhiri dengan ?dan kata-kata dalam nama metode dipisahkan dengan a _. Tidak yakin ke mana sperginya, secara pribadi, saya lebih suka String#starts_with?daripada yang sebenarnyaString#start_with?
Matz mengatakan dia lebih suka tanpa s karena kemudian terlihat seperti orang kedua tunggal atau orang ketiga jamak.
Andrew Grimm
5
String # start_with? diperkenalkan di ruby 1.8.7 dan 1.9.0 - untuk versi yang lebih lama Anda mungkin ingin menggunakan salah satu versi regex atau indeks yang disebutkan dalam jawaban lain.
Hamish Downer
3
di Rails, Anda dapat menggunakan String # begin_with?
@AndrewGrimm Satu-satunya masalah adalah "string" adalah orang ketiga tunggal! (Ergo, 's' seharusnya tidak dijatuhkan).
user456584
41
Judul pertanyaan dan badan pertanyaan Anda berbeda. Ruby tidak memiliki begin_with? metode. Rails , yang merupakan kerangka kerja Ruby , tidak , sebagai status sepp2k. Lihat komentarnya pada jawabannya untuk tautan ke dokumentasi untuk itu.
Anda selalu dapat menggunakan ekspresi reguler:
ifSomeString.match(/^abc/)# SomeString starts with abc
^ berarti "permulaan string" dalam ekspresi reguler
hati-hati saat membangun regex dari string literal - jangan lupa untuk menghindari karakter khusus apa pun. ada fungsi untuk itu string literal dapat diprediksi
Radu Simionescu
17
Jika ini untuk proyek non-Rails, saya akan menggunakan String#index:
Akan tetapi, ini akan menjadi lebih intensif-kinerja, dalam suatu start_with?metode hanya dapat mengkonfirmasi bahwa awal string cocok dengan string yang diberikan - dengan demikian memproses paling banyak n karakter di mana n adalah panjang dari string yang diberikan - sedangkan indexharus mencari seluruh string dasar. Dalam kasus kegagalan, starts_with?akan mengambil satu akses (per string) dan perbandingan, sedangkan indexakan berjalan hampir sepanjang string dasar.
OldPeculier
5
Anda bisa menggunakannya String =~ Regex. Ini mengembalikan posisi pertandingan regex penuh dalam string.
Jawaban:
Disebut
String#start_with?
, bukanString#startswith
: Di Ruby, nama metode boolean-ish diakhiri dengan?
dan kata-kata dalam nama metode dipisahkan dengan a_
. Tidak yakin ke manas
perginya, secara pribadi, saya lebih sukaString#starts_with?
daripada yang sebenarnyaString#start_with?
sumber
Judul pertanyaan dan badan pertanyaan Anda berbeda. Ruby tidak memiliki begin_with? metode. Rails , yang merupakan kerangka kerja Ruby , tidak , sebagai status sepp2k. Lihat komentarnya pada jawabannya untuk tautan ke dokumentasi untuk itu.
Anda selalu dapat menggunakan ekspresi reguler:
^
berarti "permulaan string" dalam ekspresi regulersumber
?
dalam judul pertanyaan)Jika ini untuk proyek non-Rails, saya akan menggunakan
String#index
:sumber
start_with?
metode hanya dapat mengkonfirmasi bahwa awal string cocok dengan string yang diberikan - dengan demikian memproses paling banyak n karakter di mana n adalah panjang dari string yang diberikan - sedangkanindex
harus mencari seluruh string dasar. Dalam kasus kegagalan,starts_with?
akan mengambil satu akses (per string) dan perbandingan, sedangkanindex
akan berjalan hampir sepanjang string dasar.Anda bisa menggunakannya
String =~ Regex
. Ini mengembalikan posisi pertandingan regex penuh dalam string.sumber
//
alih-alih%r
kapan pun memungkinkan.