반응형
대소문자를 무시하고 문자열을 비교하는 방법
나는 되고 싶다.apple
그리고.Apple
…과 비교하면true
.현재의
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns FALSE
당신은 찾고 있어요. 그것은 돌아옵니다.0
두 문자열이 같은 경우 대소문자를 구분하지 않습니다.
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
또는 두 문자열을 소문자()str.downcase
로 변환하고 동일성을 비교할 수 있습니다.
Ruby 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
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
Ruby 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에서는 UTF-8 문자열을 수동으로 비교할 수 있습니다.active_support
보석:
>> str1.downcase == str2.downcase
=> true
루비 2.4 작동 중인 fine case cmp의 경우?utf-8 문자열의 경우(mb_chars 필요 없음):
2.4.1 :062 > 'строка1'.casecmp?('СтроКа1')
=> true
하지만 casecmp는 utf-8에서 작동하지 않습니다.
2.4.1 :062 > 'строка1'.casecmp('СтроКА1')
=> 1
2.4.1 :063 > 'string1'.casecmp('StrInG1')
=> 0
casecmp와 0?는 루비 내장 메서드입니다. casecmp는 두 문자열이 동일하면 0을 반환하고 대소문자를 구분하지 않고 0을 반환합니까?0 값 확인(==0)
str1.casecmp(str2).zero?
언급URL : https://stackoverflow.com/questions/2844507/how-to-compare-strings-ignoring-the-case
반응형
'programing' 카테고리의 다른 글
Mac을 소유하지 않고 iOS 앱을 구축하시겠습니까? (0) | 2023.07.05 |
---|---|
Docker와 Python virtualenv의 차이점은 무엇입니까? (0) | 2023.07.05 |
Oracle, Postgres 및 SQL Server의 문자열 연결 연산자 (0) | 2023.06.30 |
가격이 문자열로 저장된 MongoDB $gt/$lt 연산자 (0) | 2023.06.30 |
내부 클래스에서 외부 클래스에 액세스하는 방법은 무엇입니까? (0) | 2023.06.30 |