Saya ingin apple
dan Apple
perbandingan menjadi true
. Saat ini
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns FALSE
ruby
string
string-comparison
Steven
sumber
sumber
casecmp
: nama konyol untuk metode perbandingan case- in -sensitive ?!== 0
denganzero?
"Apple".casecmp("APPLE").zero?
Tapi secara pribadi saya suka jawaban Andres di bawah ini, yang menggunakan.casecmp?
Di Ruby 2.4.0 Anda memiliki:
casecmp?(other_str) → true, false, or nil
Di sini Anda memiliki info lebih lanjut
sumber
casecmp
sampah ini ."aBcDeF".downcase == "abcdef"
. Jauh lebih mudah dibaca dan keuntungan kinerja menggunakancasecmp
dihilangkan di Ruby 2.4+.false
dannil
untuk API seperti ini ...Jika Anda harus membandingkan string UTF-8 yang mengabaikan case:
Ini berfungsi seperti ini di Ruby 2.3.1 dan versi sebelumnya.
Untuk jejak memori yang lebih kecil, Anda dapat memilih
string/multibyte
:Edit , Ruby 2.4.0:
Jadi
casecmp
tidak berfungsi di 2.4.0; Namun dalam 2.4.0 orang dapat membandingkan string UTF-8 secara manual tanpaactive_support
permata:sumber
casecmp dan nol? adalah metode bawaan ruby. casecmp mengembalikan 0 jika dua string sama, case-insensitive dan nol? memeriksa nilai nol (== 0)
sumber
0
, terutama ketika bersarang dengan kondisi yang lebih terlibat.Untuk ruby 2.4 berfungsi dengan baik casecmp? untuk utf-8 strings (mb_chars tidak diperlukan):
tapi casecmp tidak bekerja untuk utf-8:
sumber