编程时字符处理

对于普通简体中文来讲,起始一个"[\\u4e00-\\u9fa5]+"就可以完美搞定,但是如果实在复杂场景中,需要对汉语类字符精细化过滤或处理,譬如我在这里就需要针对传统生僻汉字,中日韩统一表意文字,以及一些符号。
\sum_
^
通常使用Unicode去判断,很高兴的是,在我使用的Java语言中,在自1.2版本以来就已经有java.lang.Character.UnicodeBlock这样的官方帮助类为我们实现判断一个char是否属于某一个字符集,所以如果你也是Java语言,不妨可以这样:

boolean isChinese = false;
char c = str.charAt(0);
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
    || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
    || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
    isChinese = true;
}

这里我去掉了全半角以及符号的判断,因为我的应用场景是一个人的名字,所以允许生僻字和组装字,但是不允许有符号。
即使你使用的别的语言,下面我也提供了能够帮助你手动构建这样的断言函数的unicode资料,你只需要判断char是否在unicode范围之内就能够判断啦:

集合unicode区间字符总数
中日韩统一表意文字4E00—9FFF20992
中日韩统一表意文字扩展A3400—4DBF512
中日韩兼容表意文字F900—FAFF6592
中日韩符号和标点3000—303F64

如果你还需要更多的字符集信息,我推荐你到字符百科去拿到你需要的字符集