Как определить, является ли персонаж китайским характером
-
02-10-2019 - |
Вопрос
Как определить, является ли персонаж китайским персонажем с помощью Ruby?
Решение
Интересная статья о кодировках в Ruby: http://blog.groyproductions.net/articles/bytes_and_haracters_in_ruby_18. (Это часть серии - проверьте оглавление в начале статьи также)
Я не использовал китайских игорников раньше, но это, кажется, это список, поддерживаемый Unicode: http://en.wikipedia.org/wiki/List_of_cjk_unified_ideograps. Отказ Также обратите внимание, что это унифицированная система, включая японские и корейские персонажи (некоторые персонажи передаются между ними) - не уверены, если вы можете отличить, что только китайский.
Я думаю, что вы можете проверить, это персонаж CJK, вызывая это на String STR и символ с индексом N:
def check_char(str, n)
list_of_chars = str.unpack("U*")
char = list_of_chars[n]
#main blocks
if char >= 0x4E00 && char <= 0x9FFF
return true
end
#extended block A
if char >= 0x3400 && char <= 0x4DBF
return true
end
#extended block B
if char >= 0x20000 && char <= 0x2A6DF
return true
end
#extended block C
if char >= 0x2A700 && char <= 0x2B73F
return true
end
return false
end
Другие советы
Ruby 1.9
#encoding: utf-8
"漢" =~ /\p{Han}/