java判断字符串中是否有中文或者汉字的方法
来源:互联网 发布:最好用的php分销平台 编辑:程序博客网 时间:2024/06/10 22:59
虽然Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,。等等是不能识别的。import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CheckChinese {
/**
* @判断字符所占字节的长度
* @判断中文字的个数
* @author RickyLee
* @date:2013-08-15 16:00
*/
public static void main(String[] args) {
System.out.println("-------判断占有字节长度-------");
String test = "啊のa";
char[] a = test.toCharArray();
for (int i = 0; i < a.length; i++) {
String b = a[i] + "";
byte[] bytes = b.getBytes();
System.out.println(b+"的字节长度为:"+bytes.length);
}
System.out.println("-------判断是否有中文-------");
int count = 0;
String regEx = "[\\u4e00-\\u9fa5]";
String str = "中文のfdas ";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
while (m.find()) {
for (int i = 0; i <= m.groupCount(); i++) {
count = count + 1;
}
}
System.out.println("共有 " + count + "个中文字符 ");
}
}
以下是比较完善的判断方法:
import java.util.regex.Pattern;
public class CheckChinese {
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();
}
}
- java判断字符串中是否有中文或者汉字的方法
- Java字符串中判断是否有汉字
- Java判断字符是否是汉字、字符串中是否有中文。
- 判断java String中是否有汉字的方法
- java 判断字符串中是否有中文
- Java判断字符串中是否有中文
- java判断字符串中是否有中文
- JAVA 判断string字符串中是否有汉字
- C#判断字符串中是否有汉字
- 关于判断字符串是否是email或者中文汉字
- java中判断字符串中是否有中文字符
- Java把字符串中的数字删除的方法和判断字符串里面是否有汉字的方法
- Java把字符串中的数字删除的方法和判断字符串里面是否有汉字的方法
- java 判断字符串是否包含汉字的方法
- java 正则表达式判断字符串中是否有中文
- 判断JAVA字符串中是否有中文字符
- java判断字符串中是否有汉字并提取所有汉字部分
- java判断是否为汉字和是否有汉字的方法
- js远程调用Excel进行打印预览
- 以超级管理员身份运行bat
- 国内各大互联网公司相关技术站点2.0版 (集合腾讯、阿里、百度、搜狐、新浪、360等共49个)
- Android虚拟设备不能上网、不能播放声音等问题
- java图片的缩放
- java判断字符串中是否有中文或者汉字的方法
- 常用Web Service汇总(天气预报、时刻表等)
- sql server 去重复数据
- Java中遍历大容量map的正确方法
- Exception in thread \"main\" java.lang.OutOfMemoryError: Java heap space .
- weblogic安装时出现Eclipse安装主目录无效
- highcharts设置背景颜色,设置数据点单位,加大字体等
- netcdf放在weblogic下与spring-modules.jar冲突问题的解决
- java压缩文件夹