Yanıtlar:
Arıyorsunuz casecmp
. 0
İki dize eşit olursa, büyük / küçük harfe duyarlı değilse döndürür .
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
Alternatif olarak, her iki dizeyi de küçük harfe ( str.downcase
) dönüştürebilir ve eşitlikle karşılaştırabilirsiniz.
casecmp
: Bir vakadan- için saçma isim de -duyarlı karşılaştırmak yöntemle ?!
== 0
ilezero?
"Apple".casecmp("APPLE").zero?
Ama şahsen Andres cevap aşağıdaki gibi kullanır.casecmp?
In Ruby 2.4.0 sahip:casecmp?(other_str) → true, false, or nil
"abcdef".casecmp?("abcde") #=> false
"aBcDeF".casecmp?("abcdef") #=> true
"abcdef".casecmp?("abcdefg") #=> false
"abcdef".casecmp?("ABCDEF") #=> true
casecmp
gereksiz dosyayla Java kullanıyorum .
"aBcDeF".downcase == "abcdef"
bunun yerine kullanmanızı öneririm . Çok daha kolay okunabilir ve performans artışı casecmp
Ruby 2.4+ 'de kaldırılmıştır.
false
ve bunun arasındaki fark ne olurdu nil
...
UTF-8 dizelerini görmezden gelmeniz durumunda:
>> 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
Ruby 2.3.1 ve önceki sürümlerinde bu şekilde çalışır.
Daha az bellek alanı için kiraz seçimini yapabilirsiniz string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
Düzenle , Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Yani casecmp
2.4.0'da çalışmıyor; Ancak 2.4.0'da UTF-8 dizelerini taşsız manuel olarak karşılaştırabiliriz active_support
:
>> str1.downcase == str2.downcase
=> true
casecmp ve sıfır? yakut dahili yöntemlerdir. iki dize eşit, büyük / küçük harfe duyarsız ve sıfırsa casecmp 0 değerini döndürür? sıfır değerini kontrol eder (== 0)
str1.casecmp(str2).zero?
0
özellikle daha ilgili bir durumla iç içe olduğunda, kelimenin tam anlamıyla karşılaştırmaktan daha net .
Ruby 2.4 için iyi çalışıyor casecmp? utf-8 dizeleri için (mb_chars gerekli değildir):
2.4.1 :062 > 'строка1'.casecmp?('СтроКа1')
=> true
ancak casecmp utf-8 için çalışmaz:
2.4.1 :062 > 'строка1'.casecmp('СтроКА1')
=> 1
2.4.1 :063 > 'string1'.casecmp('StrInG1')
=> 0