Java 判断中文字符

Java判断一个字符串中是否有中文字符有两种方法,但是原理都一样,就是通过Unicode编码来判断,因为中文在Unicode中的编码区间为:0x4e00--0x9fa5

第一种:

  String chineseStr = "中华人民公社abc";
  char[] charArray = chineseStr.toCharArray();
  for(int i=0;i<charArray.length;i++){
    if ((charArray[i] >= 0x4e00)&&(charArray[i] <= 0x9fa5)){
      System.out.println(charArray[i]);
    }
  }

第二种:

String str = "中国chinese";
for (int i = 0; i < str.length(); i++) {
    System.out.println(str.substring(i, i + 1).matches("[\\u4e00-\\u9fa5]+"));
}

第三种:

public class IsChineseOrEnglish {
    // GENERAL_PUNCTUATION 判断中文的“号
    // CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
    // HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号

    public 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.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }

    public static void isChinese(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (isChinese(c) == true) {
                System.out.println(isChinese(c));
                return;
            } else {
                System.out.println(isChinese(c));
                return;
            }
        }
    }

    public static void main(String[] args) {
//        Random r = new Random();
//        for (int i = 0; i < 20; i++)
//            System.out.println(r.nextInt(10) + 1);
        isChinese("き");
        isChinese("中国");
    }
}

原文:http://blog.csdn.net/evangel_z/article/details/7625403

时间: 2024-10-21 05:59:09

Java 判断中文字符的相关文章

Java判断中文及中文字符转unicode

1.java中判断字符是否为中文 /** * 判断是否为中文字符 * @param c * @return */ public boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIB

判断中文字符的八种方法C#

软件开发技术交流,同学习共进步,欢迎加群, 群号:169600532  前段时间看见一些判断中文字符的方法,特整理出来,供以后用时方便 方法一 在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs. 通过对字符的unicode编码进行判断来确定字符是否为中文. protected bool IsChineseLetter(string input,int index) { int code = 0; int chfrom = Convert

Java 完美判断中文字符

Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,.等等是不能识别的. 以下是比较完善的判断方法:CharUtil.java http://www.micmiu.com/lang/java/java-check-chinese/ import java.util.regex.Pattern; public class CharUtil {  

C语言判断中文字符

#include<stdio.h> int main() { char s[20]; int i,j; char a,c[3]; FILE * fp; scanf("%s",s); fp=fopen(s,"r"); if(!fp){ printf("open error\n"); return 1; } i=0; c[2]='\0'; while((a=fgetc(fp))!=EOF){ if(a&0x80){ c[i]=a;

js判断中文字符长度

就是 你把 String.prototype.len = function() { return this.replace(/[^\x00-\xff]/g, "xx").length; } 放到你的 <Script></script>当中去,然后你要判断长度的那里 就这么用 alert($("#文本框id").val().len()); 就行了

Java判断中文字符串是否乱码

转自CSDN一个博主的文章,感觉很有用,转发收藏一下. import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChineseUtill { private static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBl

JAVA中文字符编码问题

JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问 题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经掌握了对付这些字符乱码怪兽的诀窍.可当过段时间,换了个应用或换了个环境,又会碰到那讨厌的火 星文,并再次无所适从.于是下决心好好整理一下中文字符编码问题,以方便自己记忆,也为其他程序员兄弟们提供一份参考. 首先要了解JAVA处理字符的原理.JAVA使用UNICODE来存储字符数据,处理字符时通常有

[转载]Unicode中对中文字符的编码

以前写过一篇贴子是写中文在unicode中的编码范围 unicode中文范围,但写的不是很详细,今天再次研究了下unicode,并给出详细的unicode取值范围. 本次研究的unicode对象是unicode 5.2.0版本.现在最新的是6.0版 对于这次研究的unicode把编码分为以下几个平面(英文中是plane,可以认为就是不同的区位) Unicode可以逻辑分为17平面(Plane),每个平面拥有65536( = 216)个代码点,虽然目前只有少数平面被使用. 平面0 (0000–FF

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

代码: package com.huey.dream.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { static String CN_REGEX = "[\u4e00-\u9fa5]"; // 匹配中文字符的正则表达式 static Pattern CN_PATTERN = Pattern.compile(CN_REGEX); /** *