`

怎样判断一个字符是否为中文字

阅读更多

怎样判断一个字符是否为中文字?
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??韩)的常量,有个专门的方法来判断的.JAVA的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;
        }


分享到:
评论

相关推荐

    PB判断字符串是否有中文

    2. **判断是否为中文**:接着,通过比较该字符的ASCII值来判断它是否属于中文范围。中文字符的ASCII值通常大于128。因此,我们可以通过`IfAsc`函数来实现这一逻辑。`IfAsc`函数返回一个字符或字符串的ASCII码值。...

    判断一个字符串是否为数字(delphi源码)

    ### Delphi 源码分析:判断一个字符串是否为数字 #### 一、知识点概述 在编程中,经常需要处理各种类型的数据,其中最常见的就是数字和字符串。有时我们需要判断一个字符串是否代表一个有效的数字,这样的功能可以...

    C#判断字符串是否存在字母及字符串中字符的替换实例

    本文实例讲述了C#判断字符串是否存在字母及字符串中字符的替换的方法。分享给大家供大家参考。具体实现方法如下: 首先要添加对命名空间“using System.Text.RegularExpressions;”的引用 下面以一个字符串为例: ...

    oracle 如何判断一个字符串能否转换为数字?

    ### Oracle 判断字符串是否能转换为数字的方法 在Oracle数据库中,我们经常需要处理各种数据类型...通过上述方法,我们可以在Oracle中有效地判断一个字符串是否可以转换为数字,从而避免因类型转换错误而导致的问题。

    判断字符串中是否包含emoji表情

    判断字符串是否包含emoji表情

    判断字符串是否包含日文.txt

    判断字符串是否包含日文字符

    java 字符串中文判断

    至于判断字符串中是否有连续的中文字符,我们可以稍微修改上述代码,添加一个额外的条件来检查当前字符和下一个字符是否都是中文。这里是一个可能的实现: ```java public static boolean hasConsecutiveChinese...

    输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数(C语言代码)

    首先,C语言提供了一个名为`getchar()`的函数,可以用来读取用户输入的一个字符。由于题目要求输入10个字符,我们需要用循环来读取。以下是一个简单的示例: ```c #include int main() { int alpha = 0, space_...

    判断字符串的类型

    `isalnum()`函数用于判断一个字符是否为字母或数字。它在标准库`&lt;ctype.h&gt;`中定义,其原型为`int isalnum(int c);`。此函数会检查参数`c`是否为字母(由`isalpha()`确定)或数字(由`isdigit()`确定)。如果`c`是...

    文字字符 字符拼凑文字工具

    1. **liutf_reg.dll**:这可能是一个动态链接库文件,用于提供某些特定的功能,如字符编码转换,帮助软件在不同语言环境下正常工作。 2. **Fonttxt.exe**:这很可能是软件的主执行文件,双击运行这个文件即可启动...

    统计一个字符串中某个字符的个数

    在编程领域,统计一个字符串中特定字符的个数是一项基础任务,它涉及到字符串处理和循环控制等基础知识。在这个场景中,我们使用汇编语言来实现这个功能。汇编语言是一种低级编程语言,它直接对应于机器指令,具有...

    易语言判断UTF-8字符

    在易语言中,有时候我们需要判断一个字符串是否是UTF-8编码的,这就需要用到"IsTextUTF8"这样的函数。 `IsTextUTF8`函数是易语言中用于检测字符串是否符合UTF-8编码规范的函数。这个函数会检查字符串的每个字节,...

    易语言判断文本是否数字和字母

    易语言提供了多种方法来判断一个文本字符串是否只包含数字。通常,可以使用`字符串到整数`或`字符串到浮点数`等函数尝试转换文本,如果转换成功且没有异常,那么该文本就是纯数字。此外,也可以通过遍历文本中的每...

    输入一行字符,分别统计出其中的英文字母、空格、数字、和其他字符个数

    本文将详细讲解如何实现一个程序,输入一行字符并分别统计其中的英文字母、空格、数字以及其他字符的数量。这个任务涉及到基础的字符处理、条件判断以及计数技巧,对于学习编程特别是数据结构的理解有很大帮助。 ...

    字典树判断字符是否存在(可以判断文字是否存在)

    字典树,也被称为Trie或Prefix Tree,是一种用于存储字符串的数据结构,它允许我们高效地查询一个字符串是否存在于已存储的字符串集合中。在这个场景中,我们将利用字典树来判断一个TXT文件中的所有单词是否都存在于...

    统计字符串中各字符个数

    (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。 (4)存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围: 可以输入大写、小写的英文...

    判断字符串有多少个汉字和标点符号

    在进行文本处理时,经常需要判断一个字符串中包含了多少个汉字和标点符号。本篇文章将详细探讨如何实现这一功能,并深入理解其中涉及的Unicode编码知识。 #### 二、Unicode编码与字符集 Unicode是一种用于计算机上...

    输入一个串,判断字母个数和字符个数。C语言

    代码中的条件语句`if((c&gt;='a'&&c)||(c&gt;='A'&&c))`用于判断字符`c`是否为字母。这里利用了ASCII码的特性,即所有小写字母的ASCII值在`97`至`122`之间,大写字母的ASCII值在`65`至`90`之间。通过逻辑与(`&&`)和逻辑或...

    python统计字符串中中英文、空格、数字、标点个数

    例如,`char.isalpha()`返回True如果`char`是字母(包括英文和中文),`char.isdigit()`返回True如果`char`是数字,`char.isspace()`检测是否为空格,`char.ispunct()`则用于判断是否为标点符号。 2. **计数过程**...

    去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符

    去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符两个程序,vs2013已经验证

Global site tag (gtag.js) - Google Analytics