जवाबों:
तुम खोज रहे हो casecmp
। यह रिटर्न 0
अगर दो तार के बराबर हैं, केस-insensitively।
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
वैकल्पिक रूप से, आप दोनों तारों को निचले मामले में बदल सकते हैं ( str.downcase
) और समानता के लिए तुलना कर सकते हैं ।
casecmp
: एक केस के लिए एक मूर्खतापूर्ण नाम में संवेदनशील तुलना विधि ?!
== 0
साथzero?
"Apple".casecmp("APPLE").zero?
लेकिन व्यक्तिगत रूप से मुझे एंड्रेस का जवाब पसंद है, जो उपयोग करता है.casecmp?
में रूबी 2.4.0 आप:casecmp?(other_str) → true, false, or nil
"abcdef".casecmp?("abcde") #=> false
"aBcDeF".casecmp?("abcdef") #=> true
"abcdef".casecmp?("abcdefg") #=> false
"abcdef".casecmp?("ABCDEF") #=> true
casecmp
कबाड़ के साथ जावा का उपयोग कर रहा हूं ।
"aBcDeF".downcase == "abcdef"
इसके बजाय उपयोग करें । बहुत अधिक पठनीय और उपयोग के प्रदर्शन लाभ casecmp
रूबी 2.4+ में समाप्त हो गए हैं।
false
और अंतर क्या होगा nil
...
मामले में आपको UTF-8 तार की अनदेखी करने वाले मामले की तुलना करनी होगी:
>> 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
यह रूबी 2.3.1 और पुराने संस्करणों में इस तरह से काम करता है।
छोटे स्मृति पदचिह्न के लिए आप चेरी चुन सकते हैं string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
संपादित करें , रूबी 2.4.0:
>> str1.casecmp(str2) == 0
=> false
तो casecmp
2.4.0 में काम नहीं करता है; हालांकि 2.4.0 में कोई भी यूटीएफ -8 तार की तुलना बिना active_support
रत्न के स्वयं कर सकता है :
>> str1.downcase == str2.downcase
=> true
किस्सपैक और शून्य? रूबी इनबिल्ट तरीके हैं। यदि दो तार बराबर, केस-असंवेदनशील और शून्य हैं, तो केसकैंप 0 देता है? शून्य मान के लिए जांच (== 0)
str1.casecmp(str2).zero?
0
, खासकर जब एक अधिक सम्मिलित स्थिति के साथ नेस्टेड हो।