Как определить, является ли персонаж китайским характером

StackOverflow https://stackoverflow.com/questions/2727804

Вопрос

Как определить, является ли персонаж китайским персонажем с помощью 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}/
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top