Jawaban:
Anda sedang mencari casecmp
. Ia mengembalikan 0
jika dua string sama, case-insensitive.
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
Atau, Anda dapat mengonversi kedua string menjadi huruf kecil ( str.downcase
) dan membandingkan untuk persamaan.
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
"abcdef".casecmp?("abcde") #=> false
"aBcDeF".casecmp?("abcdef") #=> true
"abcdef".casecmp?("abcdefg") #=> false
"abcdef".casecmp?("ABCDEF") #=> true
casecmp
sampah ini .
"aBcDeF".downcase == "abcdef"
. Jauh lebih mudah dibaca dan keuntungan kinerja menggunakan casecmp
dihilangkan di Ruby 2.4+.
false
dan nil
untuk API seperti ini ...
Jika Anda harus membandingkan string UTF-8 yang mengabaikan case:
>> str1 = "Мария"
=> "Мария"
>> str2 = "мария"
=> "мария"
>> str1.casecmp(str2) == 0
=> false
>> require 'active_support/all'
=> true
>> str1.mb_chars.downcase.to_s.casecmp(str2.mb_chars.downcase.to_s) == 0
=> true
Ini berfungsi seperti ini di Ruby 2.3.1 dan versi sebelumnya.
Untuk jejak memori yang lebih kecil, Anda dapat memilih string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
Edit , Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Jadi casecmp
tidak berfungsi di 2.4.0; Namun dalam 2.4.0 orang dapat membandingkan string UTF-8 secara manual tanpa active_support
permata:
>> str1.downcase == str2.downcase
=> true
casecmp dan nol? adalah metode bawaan ruby. casecmp mengembalikan 0 jika dua string sama, case-insensitive dan nol? memeriksa nilai nol (== 0)
str1.casecmp(str2).zero?
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):
2.4.1 :062 > 'строка1'.casecmp?('СтроКа1')
=> true
tapi casecmp tidak bekerja untuk utf-8:
2.4.1 :062 > 'строка1'.casecmp('СтроКА1')
=> 1
2.4.1 :063 > 'string1'.casecmp('StrInG1')
=> 0