Ruby에서 로마 숫자 문자 (기종 종속 문자)를 알파벳으로 변환
하고 싶은 일
예를 들어 Ⅶ
( U+2166 )를 VII
로 변환하고 싶습니다.
방법
어리석은 방법
def replace_roman_numerals_with_alphabets(str)
conversions = {
'Ⅰ' => 'I', 'Ⅱ' => 'II', 'Ⅲ' => 'III', 'Ⅳ' => 'IV', 'Ⅴ' => 'V',
'Ⅵ' => 'VI', 'Ⅶ' => 'VII', 'Ⅷ' => 'VIII', 'Ⅸ' => 'IX', 'Ⅹ' => 'X',
'Ⅺ' => 'XI', 'Ⅻ' => 'XII'
}.freeze
str.gsub(/[#{conversions.keys}]/, conversions)
end
replace_roman_numerals_with_alphabets('ファイナルファンタジーⅦ')
#=> "ファイナルファンタジーVII"
변환 규칙을 직접 준비하는 것은 어렵습니다
똑똑한 방법
def replace_roman_numerals_with_alphabets(str)
# Unicode の U+2160 から U+217F までがローマ数字。
roman_numerals_pattern = /[\u2160-\u217F]/
str.gsub(roman_numerals_pattern) { |char| char.unicode_normalize(:nfkd) }
end
replace_roman_numerals_with_alphabets('ファイナルファンタジーⅦ')
#=> "ファイナルファンタジーVII"
# ちなみに……
'ファイナルファンタジーⅦ'.unicode_normalize(:nfkd)
#=> "ファイナルファンタジーVII"
NFKD 형식(또는 NFKC 형식)으로 유니코드 정규화 하는 것으로, 대응하는 알파벳으로 분해할 수가 있다.
참고
어리석은 방법
def replace_roman_numerals_with_alphabets(str)
conversions = {
'Ⅰ' => 'I', 'Ⅱ' => 'II', 'Ⅲ' => 'III', 'Ⅳ' => 'IV', 'Ⅴ' => 'V',
'Ⅵ' => 'VI', 'Ⅶ' => 'VII', 'Ⅷ' => 'VIII', 'Ⅸ' => 'IX', 'Ⅹ' => 'X',
'Ⅺ' => 'XI', 'Ⅻ' => 'XII'
}.freeze
str.gsub(/[#{conversions.keys}]/, conversions)
end
replace_roman_numerals_with_alphabets('ファイナルファンタジーⅦ')
#=> "ファイナルファンタジーVII"
변환 규칙을 직접 준비하는 것은 어렵습니다
똑똑한 방법
def replace_roman_numerals_with_alphabets(str)
# Unicode の U+2160 から U+217F までがローマ数字。
roman_numerals_pattern = /[\u2160-\u217F]/
str.gsub(roman_numerals_pattern) { |char| char.unicode_normalize(:nfkd) }
end
replace_roman_numerals_with_alphabets('ファイナルファンタジーⅦ')
#=> "ファイナルファンタジーVII"
# ちなみに……
'ファイナルファンタジーⅦ'.unicode_normalize(:nfkd)
#=> "ファイナルファンタジーVII"
NFKD 형식(또는 NFKC 형식)으로 유니코드 정규화 하는 것으로, 대응하는 알파벳으로 분해할 수가 있다.
참고
[Ruby] String#gsub
[Qiita] Python 3에서 유니 코드에 관한 비망록
Reference
이 문제에 관하여(Ruby에서 로마 숫자 문자 (기종 종속 문자)를 알파벳으로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/QUANON/items/34bab6a532b1350b15f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)