如何确定角色是否是汉字

Hel*_*rld 10 ruby unicode encoding cjk character-properties

如何确定角色是否是使用红宝石的中文角色?

ste*_*lag 16

Ruby 1.9

#encoding: utf-8   
 "?" =~ /\p{Han}/
Run Code Online (Sandbox Code Playgroud)


And*_*anu 7

关于Ruby中编码的一篇有趣的文章:http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18(它是一系列文章的一部分 - 也在文章开头检查目录)

我之前没有使用过汉字,但这似乎是unicode支持的列表:http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs.另请注意,它是一个统一的系统,包括日语和韩语字符(它们之间共享一些字符) - 不确定是否可以区分哪些只是中文.

我想你可以通过在字符串str和字符索引为n的字符上调用它来检查它是否是CJK字符:

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
Run Code Online (Sandbox Code Playgroud)