`
projecttian
  • 浏览: 33749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

判断java中的中文字符

 
阅读更多
package com.utils;

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统一汉字)
    //Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断
    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();
    }
}

 

分享到:
评论

相关推荐

    java 字符串中文判断

    本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要理解Java中的字符类型`char`。在Java中,一个`char`类型的变量可以存储一个Unicode字符,...

    java 判断字符串是否是中文

    java 判断字符串是否是中文 共总结了6种方法。。。。

    Java 正则表达式判断字符串是否包含中文

    通过本文的学习,我们不仅了解了如何使用 Java 的正则表达式来判断一个字符串中是否包含中文字符,还深入了解了 Java 中正则表达式的相关 API 和基本原理。这对于从事 Java 开发的技术人员来说是非常实用且必要的...

    java 判断汉字 汉字的判断

    以上介绍了两种在Java中判断字符串是否包含汉字的方法。第一种方法较为简单,适用于初步筛选。第二种方法更为精确,可以准确地判断字符串是否包含汉字。实际开发中应根据具体需求选择合适的方法。此外,对于复杂的多...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...

    java 判断中英文

    在Java编程语言中,判断一个字符串是否包含中文字符或英文字符是常见的需求,这主要涉及到字符编码和字符串处理的知识。本文将深入探讨如何利用Java进行这样的判断。 首先,我们需要了解字符编码的基础。在计算机中...

    Java编写的非常有用的方法,文字中提取中文字符

    为了方便你直接使用这些功能,你可以将以上代码保存到名为`Java取得字符串中汉字字符串.java`和`判断是否为空白字符串.java`的两个Java文件中。在你的项目中导入并使用这些类,它们将帮助你有效地处理字符串中的汉字...

    Java中文字符处理.docx

    ### Java中文字符处理知识点 #### 一、判断字符串是否全为汉字 为了判断一个字符串是否完全由汉字组成,可以通过正则表达式实现。具体做法是使用Unicode编码范围内的汉字字符来构建一个匹配模式。 **代码示例:**...

    java判断中文字符串长度的简单实例

    通过遍历字符串中的每一个字符,并判断是否匹配正则表达式`[\u0391-\uFFE5]`(此正则表达式覆盖了常用的汉字编码范围),来决定该字符是中文还是其他字符。如果匹配,则长度加2;如果不匹配,则长度加1。 2. 第二个...

    Java中判断字符串是中文或者英文的工具类分享

    在Java编程中,有时我们需要判断一个字符串中的字符是否为中文或英文。为了实现这个功能,我们可以创建一个工具类,利用Java的`Character`类和正则表达式进行判断。以下是一个示例工具类,它包含两个方法:`is...

    Java判断字符串中是否包含中文方法

    特别是在多语言环境中,我们需要能够判断字符串中是否包含特定的字符集,比如中文字符。由于中文字符在Unicode编码中具有特定的编码范围,我们可以利用这一点来判断字符串中是否包含中文。 首先,了解Unicode编码...

    scala java 简体、繁体互转换,判断是否为简体、繁体

    而繁体中文则是传统汉字,主要在台湾、香港、澳门以及海外华人社区中使用,其字符保留了更多的历史特征和复杂性。 **在Scala中处理简体和繁体中文:** Scala是一种强大的、面向对象和函数式的编程语言,可以利用...

    java实现中文分词simhash算法

    下载并引入这个库后,可以调用`CoreNLPSegment.java`中的方法来对中文文本进行分词处理,得到单词列表,这是后续分析的基础。 接下来,我们讨论**SimHash算法**。SimHash是一种高效的近似哈希算法,主要用于判断两...

    java提取汉字首字母

    - 非汉字字符:处理文本时,可能遇到标点符号、数字和其他非汉字字符,需要正确处理它们。 总之,Java提取汉字首字母是一个涉及字符编码、拼音转换和字符串处理的过程。在实际编程中,可以通过自定义算法或者利用...

    Java中英文字符类型统计.rar

    Java字符类型统计,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。...遍历arrStr数组,用于统计字母和汉字的个数,判断i是否是汉字,判断i是否是字母,然后输出汉字和字母的个数。

    统计字符串中汉字、字母、数字、英文标点、中文标点个数

    在Python中,我们可以使用内置的`str`类的`isalpha()`、`isdigit()`、`isspace()`等方法来判断字符类型,或者使用`ord()`函数获取字符的Unicode编码来识别中文和中文标点。以下是一个简单的实现示例: ```python ...

    java中判断字段真实长度的实例(中文2个字符,英文1个字符)

    实例中提到的Unicode范围\u4e00-\u9fa5正是指的中文汉字的标准范围,覆盖了几乎所有的中文常用字。 总结来说,这个实例详细介绍了如何通过编程逻辑,更贴合实际应用地处理中文字符在长度上的特殊性。在实际开发中,...

    java处理字符和字符串课件

    // 汉字字符 ``` ##### 15.1.1 Character字符包装器类 - **概念**:有时需要将`char`类型作为对象来处理,这时就需要使用`Character`类,它是`char`类型的包装类。 - **特点**: - `Character`对象包含一个`char...

    java 判断是否有中文,以及它的位置

    在Java编程语言中,判断一个字符串是否包含中文字符并找到这些字符的位置是一项常见的任务。这在处理中文数据、文本分析或者进行国际化应用时尤为关键。本文将详细介绍如何使用Java实现这个功能。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics