本文介绍了Java判断中英文符号,标点的实现,分享给大家,具体如下:
在Java中,主要使用字符类处理字符有关功能,而JDK 1.7中字符是按照Unicode 6.0版本实现的,所以这个要先学习下常用的Unicode编码。
其中的UnicodeBlock和UnicodeScript类可以帮助我们判断字符类型,UnicodeBlock是Unicode标准协会组织Unicode码的一个基本单位,实际上一个UnicodeBlock代表一片连续的Unicode号码段,UnicodeBlock之间不重叠,例如,通常我们利用Unicode编码是否在0 x4e00-0x9fcc来判断某字符是否为汉字,就是因为,有个UnicodeBlock专门划分为存储汉字(准确的说是CJK统一汉字),这个UnicodeBlock叫做CJK统一象形文字,总共定义了74617个汉字。
UnicodeBlock与UnicodeScript关系:
所以UnicodeScript是从语言书写规则层次对Unicode字符的分类,这是用使用角度划分,而UnicodeBlock是从硬的编码角度划分。
1。UnicodeBlock是简单的数值范围(其中可能有些块中会有一些尚未分配字符的“空号”)。
2。在一个UnicodeScript中的字符可能分散在多个UnicodeBlock中;
3。一个UnicodeBlock中的字符可能会被划进多个UnicodeScript中。
判别中文标点符号。
因为中文的标点符号主要存在于以下5个UnicodeBlock中,
U2000-General标点符号(百分号,千分号,单引号,双引号等)
U3000-CJK符号和标点符号(顿号,句号,书名号,& # 12344;,& # 12345;,& # 12346;等;PS:后面三个字符你知道什么意思吗?:),,,)
UFF00-Halfwidth和Fullwidth形式(大于,小于,等于,括号,感叹号,加,减,冒号,分号等等)
UFE30-CJK兼容性Forms (主要是给竖写方式使用的括号,以及间断线﹉,波浪线﹌等)
UFE10-Vertical Forms (主要是一些竖着写的标点符号, 等等)
//根据UnicodeBlock方法判断中文标点符号 公共布尔isChinesePunctuation (char c) { 的性格。UnicodeBlock乌兰巴托=Character.UnicodeBlock.of (c); 如果(乌兰巴托==Character.UnicodeBlock.GENERAL_PUNCTUATION | |乌兰巴托==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION | |乌兰巴托==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS | |乌兰巴托==Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS | |乌兰巴托==Character.UnicodeBlock.VERTICAL_FORMS) { 返回true; 其他}{ 返回错误; } } >之前
静态布尔isSymbol (char ch) { 如果(isCnSymbol (ch))返回true; 如果(isEnSymbol (ch))返回true; 如果(0 x2010 & lt;=ch,,ch & lt;=0 x2017)返回true; 如果(0 x2020 & lt;=ch,,ch & lt;=0 x2027)返回true; 如果(0 x2b00 & lt;=ch,,ch & lt;=0 x2bff)返回true; 如果(0 xff03 & lt;=ch,,ch & lt;=0 xff06)返回true; 如果(0 xff08 & lt;=ch,,ch & lt;=0 xff0b)返回true; 如果(ch==0 xff0d | | ch==0 xff0f)返回true; 如果(0 xff1c & lt;=ch,,ch & lt;=0 xff1e)返回true; 如果(ch==0 xff20 | | ch==0 xff65)返回true; 如果(0 xff3b & lt;=ch,,ch & lt;=0 xff40)返回true; 如果(0 xff5b & lt;=ch,,ch & lt;=0 xff60)返回true; 如果(ch==0 xff62 | | ch==0 xff63)返回true; 如果(ch==0 x0020 | | ch==0 x3000)返回true; 返回错误; } 静态布尔isCnSymbol (char ch) { 如果(0 x3004 & lt;=ch,,ch & lt;=0 x301c)返回true; 如果(0 x3020 & lt;=ch,,ch & lt;=0 x303f)返回true; 返回错误; } 静态布尔isEnSymbol (char ch) { 如果(ch==0 x40)返回true; 如果(ch==0 x2d | | ch==0 x2f)返回true; 如果(0 x23 & lt;=ch,,ch & lt;=0 x26)返回true; 如果(0 x28 & lt;=ch,,ch & lt;=0 x2b)返回true; 如果(0 x3c & lt;=ch,,ch & lt;=0 x3e)返回true; 如果(0 x5b & lt;=ch,,ch & lt;=0 x60)返回true; 如果(0 x7b & lt;=ch,,ch & lt;=0 x7e)返回true; 返回错误; } 静态布尔isPunctuation (char ch) { 如果(isCjkPunc (ch))返回true; 如果(isEnPunc (ch))返回true; 如果(0 x2018 & lt;=ch,,ch & lt;=0 x201f)返回true; 如果(ch==0 xff01 | | ch==0 xff02)返回true; 如果(ch==0 xff07 | | ch==0 xff0c)返回true; 如果(ch==0 xff1a | | ch==0 xff1b)返回true; 如果(ch==0 xff1f | | ch==0 xff61)返回true; 如果(ch==0 xff0e)返回true; 如果(ch==0 xff65)返回true; 返回错误; } 静态布尔isEnPunc (char ch) { 如果(0 x21 & lt;=ch,,ch & lt;=0)将返回true; 如果(ch==0 x27 | | ch==0 x2c)返回true; 如果(ch==|表示就是0 x2e | ch==0 x3a)返回true; 如果(ch==0 x3b | | ch==0 x3f)返回true; 返回错误; } 静态布尔isCjkPunc (char ch) { 如果(0 x3001 & lt;=ch,,ch & lt;=0 x3003)返回true; 如果(0 x301d & lt;=ch,,ch & lt;=0 x301f)返回true; 返回错误; }Java判断中英文符号,标点的实现