10

ruby如何判断一个字符是否为汉字?</p>

4

2 回答 2

18

红宝石 1.9

#encoding: utf-8   
 "漢" =~ /\p{Han}/
于 2010-04-28T08:37:24.813 回答
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
于 2010-04-28T09:48:22.007 回答