怎样判断一个字符是否为中文字
2010-02-22 15:50
337 查看
怎样判断一个字符是否为中文字?
http://www.matrix.org.cn/thread.shtml?topicId=95b99c6d-46d1-11db-af0b-0f766c077b58&forumId=19
http://www.matrix.org.cn/thread.shtml?topicId=95b99c6d-46d1-11db-af0b-0f766c077b58&forumId=19
中文字在unicode里用2字节表示的时候,编码(例如,UTF-16BE)是从4e00-9FBB 如果用char表示,第一个中文字是char c = 19968 (4e00)最后一个中文字,char c = 40891 (9FBB) 如果你是有char数组,直接比较就行了。小于19968大于40891都不是中文 *字*。中文的标点符号,在另外的编码段,具体可以去查www.unicode.org。不过我一般还是使用byte[2]来操作一个中文字,转string也比较方便。 用byte进行转换可以如下面: byte[] b = new String("一").getBytes("UTF-16BE"); int k = b[0] & 0xFF; int x = b[1] & 0xFF; int sum = k * 256 + x; sum = 19968 byte类型经过一次& 0xFF以后将直接转换成为int类型。 //判断是否中文字 public boolean checkChinese(char word){ if ((word >= 0x4e00)&&(word<=0x9fbb)) return true; else return false; } java.lang.Character.UnicodeBlock. 有个CJK(china中,japan日,k??韩)的常量,有个专门的方法来判断的.J***A的lib和API还是很全的 [System.out.println(Character.UnicodeBlock.of('中'));] 这两天在写一个关于中文的小程序,里面有点代码: enum CharType{ DELIMITER, //非字母截止字符,例如,.)( 等等 ( 包含U0000-U0080) NUM, //2字节数字1234 LETTER, //gb2312中的,例如:ABC,2字节字符 同时包含 1字节能表示的 basic latin and latin-1 OTHER,// 其他字符 CHINESE;//中文字 } private CharType checkType(char c){ CharType ct =null; //中文,编码区间0x4e00-0x9fbb if ((c >= 0x4e00)&&(c <= 0x9fbb)){ ct = CharType.CHINESE; } //Halfwidth and Fullwidth Forms, 编码区间0xff00-0xffef else if ( (c >= 0xff00) &&(c <= 0xffef)) { // 2字节英文字 if ((( c >= 0xff21 )&&( c <= 0xff3a)) || (( c >= 0xff41 )&&( c <= 0xff5a))){ ct = CharType.LETTER; } //2字节数字 else if (( c >= 0xff10 )&&( c <= 0xff19) ){ ct = CharType.NUM; } //其他字符,可以认为是标点符号 else ct = CharType.DELIMITER; } //basic latin,编码区间 0000-007f else if ( (c >= 0x0021) &&(c <= 0x007e)){ //1字节数字 if (( c >= 0x0030 )&&( c <= 0x0039) ){ ct = CharType.NUM; } //1字节字符 else if ((( c >= 0x0041 )&&( c <= 0x005a)) || (( c >= 0x0061 )&&( c <= 0x007a))) { ct = CharType.LETTER; } //其他字符,可以认为是标点符号 else ct = CharType.DELIMITER; } //latin-1,编码区间0080-00ff else if ( (c >= 0x00a1) &&(c <= 0x00ff)){ if (( c >= 0x00c0 )&&( c <= 0x00ff)){ ct = CharType.LETTER; } else ct = CharType.DELIMITER; } else ct = CharType.OTHER; return ct; } |
相关文章推荐
- 怎样判断一个字符是否为中文字
- Java判断一个字符串中是否包含中文字符工具类
- 判断一个字符串里是否有中文字符
- JS——判断一个字符是否是数字 || 英文 || 中文
- 判断一个字符是否是中文
- JAVA读取中文文件,判断string中含有中文字符,判断某一个字符是否为中文字符
- 判断一个字符串中是否含有中文字符:
- 判断一个字符串中是否含有中文字符(测试可用)
- 如何判断一个unicode字符是否是中文? - Nokia Developer Community - Discussions
- Java判断一个字符串里面是否含有中文字符
- 判断一个字符串在至多删除k个字符后是否为回文串
- php怎样判断一个字符串是否包含另一个字符串strpos()
- c语言:不用if,else语句,也不用循环条件等,输入一个字符,判断是否为大写字母
- 判断是否为润年&&键盘输入一个10000以内的大于零的正整数,输出相应中文标识
- 判断一个字符串里是否包含另一个字符串所有的字符
- 如何判断一个字符串中的字符是否唯一
- 判断文本中是否含有中文字符
- 如何判断一个String字符是否在string[]数组里
- php怎样判断一个字符串是否包含另一个字符串?
- paip.判断字符是否中文与以及判读是否是汉字uapi python java php