반응형
대소 문자를 무시하고 문자열을 비교하는 방법
내가 원하는 apple
과 Apple
비교 될 수 있습니다 true
. 현재
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns FALSE
찾고 있습니다 casecmp
. 0
두 문자열이 대소 문자를 구분하지 않는 경우 반환 합니다.
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
또는 두 문자열을 모두 소문자 ( str.downcase
) 로 변환 하고 동등성을 비교할 수 있습니다.
에서 루비 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에서는 active_support
gem 없이 UTF-8 문자열을 수동으로 비교할 수 있습니다 .
>> str1.downcase == str2.downcase
=> true
casecmp와 0? 루비 내장 메소드입니다. casecmp는 두 개의 문자열이 대소 문자를 구분하지 않고 0이면 0을 반환합니까? 0 값을 확인합니다 (== 0)
str1.casecmp(str2).zero?
루비 2.4 작동 괜찮은 casecmp? 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
참고 URL : https://stackoverflow.com/questions/2844507/how-to-compare-strings-ignoring-the-case
반응형
'programing tip' 카테고리의 다른 글
Android 휴대 전화에서 가장 인기있는 화면 크기 / 해상도 (0) | 2020.05.31 |
---|---|
@HostBinding 및 @HostListener : 무엇을하고 무엇을위한 것입니까? (0) | 2020.05.31 |
"들여 쓰기에서 탭과 공백의 일관성없는 사용" (0) | 2020.05.31 |
Chrome 확장 프로그램에서 현재 탭의 URL을 얻으려면 어떻게해야하나요? (0) | 2020.05.31 |
기본 그래픽에서 플로팅 영역 외부에 범례를 플롯 하시겠습니까? (0) | 2020.05.31 |