Bagaimana saya bisa mendapatkan karakter pertama dalam string menggunakan Ruby?
Pada akhirnya yang saya lakukan adalah mengambil nama belakang seseorang dan hanya membuat inisial dari nama itu.
Jadi jika stringnya adalah "Smith", saya hanya ingin "S".
'Smith'.first
"Smith".chr #=> "S"
Jawaban:
Anda dapat menggunakan kelas terbuka Ruby agar kode Anda lebih mudah dibaca. Misalnya, ini:
akan memungkinkan Anda menggunakan
initial
metode ini pada string apa pun. Jadi jika Anda memiliki variabel berikut:Kemudian Anda bisa mendapatkan inisial dengan sangat bersih dan mudah dibaca:
Metode lain yang disebutkan di sini tidak berfungsi di Ruby 1.8 (bukan berarti Anda harus menggunakan 1.8 lagi! - tetapi ketika jawaban ini diposting, itu masih cukup umum):
Tentu saja, jika Anda tidak melakukannya secara teratur, mendefinisikan metode mungkin berlebihan, dan Anda bisa melakukannya secara langsung:
sumber
Jika Anda menggunakan Ruby versi terbaru (1.9.0 atau yang lebih baru), berikut ini seharusnya berfungsi:
Jika Anda menggunakan 1.9.0+ atau 1.8.7, berikut ini seharusnya berfungsi:
Jika Anda menggunakan versi yang lebih lama dari 1.8.7, ini seharusnya berfungsi:
Perhatikan bahwa
'Smith'[0,1]
tidak tidak bekerja pada 1,8, itu akan tidak memberikan karakter pertama, hanya akan memberikan yang pertama byte .sumber
"Smith"[0]
akan mengembalikan nilai integer dari karakter 'S'. Kedua versi mematuhi"Smith"[0,1] == "S"
."Smith"[0,1]
berhasil pada 1.8 (dengan asumsi ASCII). Tidak yakin mengapa Anda berasumsi begitu banyak tentang pemohon, serta tentang semua orang yang ingin belajar dari pertanyaan itu. Misalnya, Mac OS X dilengkapi dengan Ruby 1.8, jadi tidak diperlukan penginstalan untuk pengguna ini.bekerja di ruby 1.8 dan ruby 1.9.
sumber
Demi kelengkapan, karena Ruby 1.9 String # chr mengembalikan karakter pertama dari sebuah string. Ini masih tersedia di 2.0 dan 2.1.
http://ruby-doc.org/core-1.9.3/String.html#method-i-chr
sumber
Di MRI 1.8.7 atau lebih tinggi:
sumber
Di Rails
sumber
Coba ini:
ATAU
sumber
sumber
"Smith"[0]
akan mengembalikan nilai integer dari karakter 'S'. Kedua versi itu patuh"Smith"[0,1] == "S"
."Smith"[0] == ?S
itu benar pada Ruby 1.8 dan 1.9Karena pilihan desain yang mengganggu di Ruby sebelum 1.9 -
some_string[0]
mengembalikan kode karakter dari karakter pertama - cara paling portabel untuk menulis ini adalahsome_string[0,1]
, yang memberitahukannya untuk mendapatkan substring pada indeks 0 yang panjangnya 1 karakter.sumber
Opsi lain yang belum disebutkan:
sumber
Anda juga bisa menggunakan
truncate
atau untuk pemformatan tambahan:
sumber
Salah satu metode berikut akan berfungsi:
sumber
.
setelah ituname
. Dan yang terakhir tidak masuk akal meskipun Anda menghapus.
, karena menggunakan dua metode berbeda untuk melakukan hal yang sama -[0]
danchr()
.