如何判断一个String是中文字符还是英文字符组成的呢? 比如:String str = "中“;则是由中文字符组成的。 String str1 = "oracle";则是由英文字符组成的。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String s="中文absdfwe中sfwef哈"; int n=0; for (int i=0;i<s.length();i++) { if (s.charAt(i) >= 0x4e00 && s.charAt(i) <= 0x9fa5) n++; } System.out.print(n); public class chinese1{ public static void main (String [] args) { chinese ch=new chinese(); boolean st=ch.hasChinese("谢谢"); System.out.println(st); } public static boolean hasChinese(String value1) { byte[] valueBytes = value1.getBytes(); return value1.length() != valueBytes.length; }}汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。汉字是双字节编码,英文是单字节编码。构成汉字的第一个字节是一个负值,第二个是正值。而构成英文字母的字节总是正值。至于为什么这么定义,我想你还是看一下unicode码的规范吧。 例如:public class chinese1{ public static void main (String [] args) { chinese1 ch=new chinese1(); boolean st=ch.hasChinese("谢谢"); System.out.println(st); } public static boolean hasChinese(String value1) { byte[] valueBytes = value1.getBytes(); System.out.println(value1.length()); System.out.println(valueBytes.length); return value1.length() != valueBytes.length; }}输出结果为:2,4,true! 见我的bloghttp://blog.csdn.net/westwin(原创)判断字符串是不是GB2312? System.out.println(str.length()==str.getBytes().length?"English":"Chinese"); Swing的JFrame窗体跳转及关闭问题 java新手提问 Hibernate在什么情况下会给类建立关系(For example:one-to-many,many-to-one Etc.),难道仅仅是为了省代码? JAVA学习方向问题 营业税问题 在jtable里 找到要找的对象怎样找它显为第一条? 如何使viewForm窗体最小化 求jsp学习视频 在APPLET中包含一个大Panel时,Frame和Panel的paint()方法不同与调用 关于Javamail的运行问题 分页分的头大。。。。。 请问,sqlserver中的datetime型怎么取出拼成java.util.date型?
int n=0;
for (int i=0;i<s.length();i++)
{
if (s.charAt(i) >= 0x4e00 && s.charAt(i) <= 0x9fa5)
n++;
}
System.out.print(n);
{
public static void main (String [] args)
{
chinese ch=new chinese();
boolean st=ch.hasChinese("谢谢");
System.out.println(st);
}
public static boolean hasChinese(String value1)
{
byte[] valueBytes = value1.getBytes();
return value1.length() != valueBytes.length;
}
}汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。
getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。汉字是双字节编码,英文是单字节编码。构成汉字的第一个字节是一个负值,第二个是正值。
而构成英文字母的字节总是正值。至于为什么这么定义,我想你还是看一下unicode码的规范吧。
public class chinese1
{
public static void main (String [] args)
{
chinese1 ch=new chinese1();
boolean st=ch.hasChinese("谢谢");
System.out.println(st);
}
public static boolean hasChinese(String value1)
{
byte[] valueBytes = value1.getBytes();
System.out.println(value1.length());
System.out.println(valueBytes.length);
return value1.length() != valueBytes.length;
}
}
输出结果为:2,4,true!
http://blog.csdn.net/westwin
(原创)判断字符串是不是GB2312?
System.out.println(str.length()==str.getBytes().length?"English":"Chinese");