Java 判断字符为中文实例代码(超管用)

网友投稿 205 2023-07-22


Java 判断字符为中文实例代码(超管用)

在做项目中经常会遇到有项目需求是需要判断字符为中文的一些问题,所以搜集了判断中文字符的代码片段,特此分享供大家参考。

直接贴出代码了,里面有详细的注释。

package com.coder4j.main;

import java.util.regex.Pattern;

/**

* Java 判断中文字符

*

* @author Chinaxiang

* @date 2015-08-11

*

*/

public class CheckChinese {

public static void main(String[] args) {

// 纯英文

String s1 = "Hello,Tom.!@#$%^&*()_+-={}|[];':\"?";

// 纯中文(不含中文标点)

String s2 = "你好中国";

// 纯中文(含中文标点)

String s3 = "你好,中国。《》:“”‘';()【】!¥、";

// 韩文

String s4 = "한국어난";

// 日文

String s5 = "ぎじゅつ";

// 特殊字符

String s6 = "��";

String s7 = "╃";

String s8 = "╂";

// 繁体中文

String s9 = "蒼老師";

// 1 使用字符范围判断

System.out.println("s1是否包含中文:" + hasChineseByRange(s1));// false

System.out.println("s2是否包含中文:" + hasChineseByRange(s2));// true

System.out.println("s3是否包含中文:" + hasChineseByRange(s3));// true

System.out.println("s4是否包含中文:" + hasChineseByRange(s4));// false

System.out.println("s5是否包含中文:" + hasChineseByRange(s5));// false

System.out.println("s6是否包含中文:" + hasChineseByRange(s6));// false

System.out.println("s7是否包含中文:" + hasChineseByRange(s7));// false

System.out.println("s8是否包含中文:" + hasChineseByRange(s8));// false

System.out.println("s9是否包含中文:" + hasChineseByRange(s9));// true

System.out.println("-------分割线-------");

System.out.println("s1是否全是中文:" + isChineseByRange(s1));// false

System.out.println("s2是否全是中文:" + isChineseByRange(s2));// true

System.out.println("s3是否全是中文:" + isChineseByRange(s3));// false 中文标点不在范围内

System.out.println("s4是否全是中文:" + isChineseByRange(s4));// false

System.out.println("s5是否全是中文:" + isChineseByRange(s5));// false

System.out.println("s6是否全是中文:" + isChineseByRange(s6));// false

System.out.println("s7是否全是中文:" + isChineseByRangbjOBOFAee(s7));// false

System.out.println("s8是否全是中文:" + isChineseByRange(s8));// false

System.out.println("s9是否全是中文:" + isChineseByRange(s9));// true

System.out.println("-------分割线-------");

// 2 使用字符范围正则判断(结果同1)

System.out.println("s1是否包含中文:" + hasChineseByReg(s1));// false

System.out.println("s2是否包含中文:" + hasChineseByReg(s2));// true

System.out.println("s3是否包含中文:" + hasChineseByReg(s3));// true

System.out.println("s4是否包含中文:" + hasChineseByReg(s4));// false

System.out.println("s5是否包含中文:" + hasChineseByReg(s5));// false

System.out.println("s6是否包含中文:" + hasChineseByReg(s6));// false

System.out.println("s7是否包含中文:" + hasChineseByReg(s7));// false

System.out.println("s8是否包含中文:" + hasChineseByReg(s8));// false

System.out.println("s9是否包含中文:" + hasChineseByReg(s9));// true

System.out.println("-------分割线-------");

System.out.println("s1是否全是中文:" + isChineseByReg(s1));// false

System.out.println("s2是否全是中文:" + isChineseByReg(s2));// true

System.out.println("s3是否全是中文:" + isChineseByReg(s3));// false 中文标点不在范围内

System.out.println("s4是否全是中文:" + isChineseByReg(s4));// false

System.out.println("s5是否全是中文:" + isChineseByReg(s5));// false

System.out.println("s6是否全是中文:" + isChineseByReg(s6));// false

System.out.println("s7是否全是中文:" + isChineseByReg(s7));// false

System.out.println("s8是否全是中文:" + isChineseByReg(s8));// false

System.out.println("s9是否全是中文:" + isChineseByReg(s9));// true

System.out.println("-------分割线-------");

// 3 使用CJK字符集判断

System.out.println("s1是否包含中文:" + hasChinese(s1));// false

System.out.println("s2是否包含中文:" + hasChinese(s2));// true

System.out.println("s3是否包含中文:" + hasChinese(s3));// true

System.out.println("s4是否包含中文:" + hasChinese(s4));// false

System.out.println("s5是否包含中文:" + hasChinese(s5));// false

System.out.println("s6是否包含中文:" + hasChinese(s6));// false

System.out.println("s7是否包含中文:" + hasChinese(s7));// false

System.out.println("s8是否包含中文:" + hasChinese(s8));// false

System.out.println("s9是否包含中文:" + hasChinese(s9));// true

System.out.println("-------分割线-------");

System.out.println("s1是否全是中文:" + isChinese(s1));// false

System.out.println("s2是否全是中文:" + isChinese(s2));// true

System.out.println("s3是否全是中文:" + isChinese(s3));// true 中文标点也被包含进来

System.out.println("s4是否全是中文:" + isChinese(s4));// false

System.out.println("shttp://5是否全是中文:" + isChinese(s5));// false

System.out.println("s6是否全是中文:" + isChinese(s6));// false

System.out.println("s7是否全是中文:" + isChinese(s7));// false

System.out.println("s8是否全是中文:" + isChinese(s8));// false

System.out.println("s9是否全是中文:" + isChinese(s9));// true

}

/**

* 是否包含中文字符

* 包含中文标点符号

*

* @param str

* @return

*/

public static boolean hasChinese(String str) {

if (str == null) {

return false;

}

char[] ch = str.toCharArray();

for (char c : ch) {

if (isChinese(c)) {

return true;

}

}

return false;

}

/**

* 是否全是中文字符

* 包含中文标点符号

*

* @param str

* @return

*/

public static boolean isChinese(String str) {

if (str == null) {

return false;

}

char[] ch = str.toCharArray();

for (char c : ch) {

if (!isChinese(c)) {

return false;

}

}

return true;

}

/**

* 是否是中文字符

* 包含中文标点符号

*

* @param c

* @return

*/

private static boolean isChinese(char c) {

Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);

if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C) {

return true;

} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) {

return true;

} else if (ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {

return true;

} else if (ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {

return true;

}

return false;

}

/**

* 是否包含汉字

* 根据汉字编码范围进行判断

* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)

*

* @param str

* @return

*/

public static boolean hasChineseByReg(String str) {

if (str == null) {

return false;

}

Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");

return pattern.matcher(str).find();

}

/**

* 是否全是汉字

* 根据汉字编码范围进行判断

* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)

*

* @param str

* @return

*/

public static boolean isChineseByReg(String str) {

if (str == null) {

return false;

}

Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");

return pattern.matcher(str).matches();

}

/**

* 是否包含汉字

* 根据汉字编码范围进行判断

* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)

*

* @param str

* @return

*/

public static boolean hasChineseByRange(String str) {

if (str == null) {

return false;

}

char[] ch = str.toCharArray();

for (char c : ch) {

if (c >= 0x4E00 && c <= 0x9FBF) {

return true;

}

}

return false;

}

/**

* 是否全是汉字

* 根据汉字编码范围进行判断

* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)

*

* @param str

* @return

*/

public static boolean isChineseByRange(String str) {

if (str == null) {

return false;

}

char[] ch = str.toCharArray();

for (char c : ch) {

if (c < 0x4E00 || c > 0x9FBF) {

return false;

}

}

return true;

}

}

如果仅仅去判断是否是中文,不需判断中文标点的话,推荐使用正则去匹配,可能更高效点。

以上代码内容给大家介绍了Java 判断字符为中文实例代码(超管用),希望对大家有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java建造者设计模式详解
下一篇:举例解析Java的设计模式编程中里氏替换原则的意义
相关文章

 发表评论

暂时没有评论,来抢沙发吧~