您的位置:首页 > 编程语言 > Java开发

java 中判断是否为 汉字(转)

2012-01-16 02:48 183 查看
======================================================

注:本文源代码点此下载

======================================================

java代码


public boolean vd(string str){
char[] chars=str.tochararray();
boolean isgb2312=false;
for(int i=0;i
byte[] bytes=(""+chars[i]).getbytes();
if(bytes.length==2){
int[] ints=new int[2];
ints[0]=bytes[0]& 0xff;
ints[1]=bytes[1]& 0xff;
if(ints[0]>=0x81 && ints[0]0xfe && ints[1]>=0x40 && ints[1]0xfe){
isgb2312=true;
break;
}
}
}
return isgb2312;
}
首先要import java.util.regex.pattern 和 java.util.regex.matcher
这两个包,接下来是代码
java代码


public boolean isnumeric(string str)
{
pattern pattern = pattern.compile(”[0-9]*”);
matcher isnum = pattern.matcher(str);
if( !isnum.matches() ) {
return false;
}
return true;
}
java.lang.character.isdigit(ch[0])
-----------------另一种-----------------
java代码


public static void main(string[] args) {
int count = 0;
string regex = "[\\u4e00-\\u9fa5]";
//system.out.println(regex);
string str = "中文fdas ";
//system.out.println(str);
pattern p = pattern.compile(regex);
matcher m = p.matcher(str);
while (m.find()) {
for (int i = 0; i
count = count + 1;
}
}
system.out.println("共有 " + count + "个 ");
}
-------------------------------------------------------------------
判断java string中是否有汉字的方法
java用的是unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了,实际中,我们希望判断一个字符是不是汉字,或者一个字符串里的字符是否有汉字来满足业务上的需 求,string类中有个这样的方法可得到其字符长度length() ,看下面例子,
java代码


string s1 = "我是中国人";
string s2 = "imchinese";
string s3 = "im中国人";
system.out.println(s1+":"+new string(s1).length());
system.out.println(s2+":"+new string(s2).length());
system.out.println(s3+":"+new string(s3).length());
output:
我是中国人:5
imchinese:9
im中国人:5
看到了吧,字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码
于是按照以上的规律,结合一位qq昵称 ?g茶?i珠海 兄的提示由以下解决方法,就是判断字符串的长度和字符字节的长度是否相同来判断是否有双字节的字符
java代码


system.out.println((s1.getbytes().length == s1.length())?"s1无汉字":"s1有汉字");
system.out.println((s2.getbytes().length == s2.length())?"s2无汉字":"s2有汉字");
system.out.println((s3.getbytes().length == s3.length())?"s3无汉字":"s3有汉字");
output:
s1有汉字
s2无汉字
s3有汉字 //
且慢,这样诚然可以判断出来一个串中是否有双字节编码的字符,但是要精确判断是否有汉字就有些麻烦了,我们知道还有许多其他国家的字符在unicode中是双字节的.
于是,需要进一步确定汉字的编码范围怎么确定呢,我用了一个本办法那就是现在记事本输出0-65535之间的字符,通过观察发现第一个汉字是'一 '最后一个是'??'(现在我也不认识);这下好了判断汉字就容易多了比如我们可以通过比较字符的编码范围,最后给大家一些我试验的结果汉字基本集中在 [19968,40869]之间,共有20901个汉字(是不是少了点,算算你能认识多少)
一个不会敲代码的程序员
绿色通道:好文要顶关注我收藏该文与我联系



======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: