Java 完美判断中文字符的方法

2016-02-19 11:02 26 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Java 完美判断中文字符的方法,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,。等等是不能识别的。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

以下是比较完善的判断方法:CharUtil.java

代码如下:

import java.util.regex.Pattern;

public class CharUtil {

    public static void main(String[] args) {
        String[] strArr = new String[] { "www.micmiu.com", "!@#$%^&*()_+{}[]|"'?/:;,.", "!¥……()——:;“”‘'《》,。?、", "不要啊", "やめて", "韩佳人", "???" };
        for (String str : strArr) {
            System.out.println("=========== 测试字符串:" + str);
            System.out.println("正则判断结果:" + isChineseByREG(str) + " -- " + isChineseByName(str));
            System.out.println("Unicode判断结果 :" + isChinese(str));
            System.out.println("详细判断列表:");
            char[] ch = str.toCharArray();
            for (int i = 0; i ch.length; i++) {
                char c = ch[i];
                System.out.println(c + " -- " + (isChinese(c) ? "是" : "否"));
            }
        }
    }

    // 根据Unicode编码完美的判断中文汉字和符号
    private static boolean isChinese(char c) {
        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.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
            return true;
        }
        return false;
    }

    // 完整的判断中文汉字和符号
    public static boolean isChinese(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i ch.length; i++) {
            char c = ch[i];
            if (isChinese(c)) {
                return true;
            }
        }
        return false;
    }

    // 只能判断部分CJK字符(CJK统一汉字)
    public static boolean isChineseByREG(String str) {
        if (str == null) {
            return false;
        }
        Pattern pattern = Pattern.compile("[u4E00-u9FBF]+");
        return pattern.matcher(str.trim()).find();
    }

    // 只能判断部分CJK字符(CJK统一汉字)
    public static boolean isChineseByName(String str) {
        if (str == null) {
            return false;
        }
        // 大小写不同:p 表示包含,P 表示不包含
        // p{Cn} 的意思为 Unicode 中未被定义字符的编码,P{Cn} 就表示 Unicode中已经被定义字符的编码
        String reg = "p{InCJK Unified Ideographs}&&P{Cn}";
        Pattern pattern = Pattern.compile(reg);
        return pattern.matcher(str.trim()).find();
    }
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1596375.html

延伸阅读
在编辑一篇文档时有没有发现文字过于紧密而影响到了美观。最起码在视觉上的感觉就是这样,这时只需要对字符间距进行调整,便可解决这个问题。下面有个不错的示例,大家不妨参考下。 简要概述 首先要选择调整的目标文字,本例以“秦桑低绿枝”为例,之后进行字体的字符间距设置。在字体对话框中可以对间距、磅值等参数进行设置,本...
中国汉字拥有约五千年的悠久历史,字体的形成也经历了漫长的发展与演变。字体设计是平面设计的重要组成部分,也是最完美的构成方式用最简单的元素表现最丰富的效果,同时兼具功能性及内涵。自德国包豪斯设计构成理论引入中国以来,随着活字印刷和激光照排技术的发展,中文字体经历并承担了重要的历史角色。 一. 方法与传承 汉字的基本笔画包...
标签: word
如何变换Word中文字方向   在Word中编辑时,为了能够使文档更具特色,很多时候我们都会采取改变文字方向的方式。今天,图老师小编就要来教一下大家,变换文字方向的技巧,让你编辑的文档也更具魅力。 Word 操作步骤 1、选中一段内容,按鼠标右键选择文字方向。 2、弹出文字方向-主文档按用户需求设置,然后将...
标签: 平面设计
这是一张来自Psdtut+网站的海报设计。 创建复古的效果没什么新奇的,但是模仿一张数十年前的海报时,需要注意的东西就多了。我们将尝试着做一张上世纪六十年代的拳击海报,开始吧! 第1步在任何设计的最初,你都应该先考虑如何传达出你的信息。 我们选用了A3纸张的海报模式,记住:当你在设计海报或者是别的什么用于打印的东西...

经验教程

272

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部