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

Как определить, является ли символ китайским символом с помощью рубина ?

10
задан dda 8 July 2012 в 18:03
поделиться

2 ответа

Интересная статья о кодировках в Ruby: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (это часть серии - также проверьте оглавление в начале статьи)

Раньше я не использовал китайские иероглифы, но, похоже, это список, поддерживаемый юникодом: http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs . Также обратите внимание, что это единая система, включающая японские и корейские символы (некоторые символы являются общими для них) - не уверен, что вы можете отличить только китайские.

Думаю, вы можете проверить, является ли это символом CJK, вызвав это для строки 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
7
ответ дан 3 December 2019 в 17:19
поделиться

Рубин 1.9

#encoding: utf-8   
 "漢" =~ /\p{Han}/
16
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: