黑马程序员技术交流社区

标题: 在截取字符串时怎么判断是字母或者汉字? [打印本页]

作者: 张亚青    时间: 2013-3-2 11:05
标题: 在截取字符串时怎么判断是字母或者汉字?
本帖最后由 张亚青 于 2013-3-11 12:35 编辑

如何在截取字符串时判断字节是字母或者汉字,求大牛们给介绍下字节流中字母、数字、中英文标点及汉字的存储和表示形式!!!
追:最好附JAVA 实现的代码!!!
作者: 偏執旳、靑春    时间: 2013-3-2 12:33
本帖最后由 偏執旳、靑春 于 2013-3-2 12:35 编辑

这个问题
说简单也简单,说难也难,问题是看你处理的内容是怎么样的?
说白了就是取一个字符,判断一下ASCII码,看看Ascii在不在里面
我给你写一个吧。
class Demo
{
    public void match(String str)
   {
      for(int i=0;str.length()-1;i++)
      {
         String c=str.subString(i,i+1);
            byte[] =c.getBytes();
             if(c[0]<0)
              {
             sop("汉字")
          }else{
               sop("不是汉字")
}


      }


   }
}
中文byte的第一个字节数都是负数
其实还是用正则方法判断比较好!!这个目前还没学吧。
其实实现这个的方式很多,不过正则表达式就是专门用来过滤字符的,非常好用,等以后来黑马了,可能会学到的。
作者: 何伟    时间: 2013-3-2 12:43
通过ASCII码判断
作者: 黄玉昆    时间: 2013-3-2 13:33
其实这涉及到了unicode的相关知识,特别详细的你可以百度一下。我这里只说几点:
在通过调用unicode的时候,其实,对于汉字,字母或者一些符号而言,都是有两个字节组成(当然,有些符号或者语言用两个字节表示不了,就用三个字节表示,这里只说常用的)。
对于汉字,两个字节可能为负整数,可能为正整数,但首字节一定不为0;而字母和符号的首字节是0,第二个字节是一个正整数。比如说字母a在unicode编码表中对应的是097。
需要说明的一点是,在获取的unicode中,前两个字节是固定的为:-2和-1。
而你直接使用字节的话,基本上汉字的两个字节都是负整数,而字母和符号只有一个字节,为正整数,当然这是由ASCII得来的,因为你获取的是ASCII中对应的值,汉字就是用两个负数表示的。
你可以测试一下:
  1. class DemoBZ
  2. {
  3.         public static void main(String[] args)throws Exception//此处必须抛出异常,为了省事,我就抛个大的
  4.         {
  5.                 //测试一,测试ASCII编码
  6.                 //定义字符串
  7.                 String s1 = "a我-b零";
  8.                 //将字符串转为字节数组
  9.                 byte[] b = s1.getBytes();
  10.                 //打印字节数组中的元素
  11.                 for(int i=0;i<b.length;i++)
  12.                 {
  13.                         System.out.println("b[" + i + "]=" + b[i]);
  14.                 }
  15.                 System.out.println("--------------------");
  16.                 //测试二,测试unicode编码
  17.                 String s2 = "a我-b零";
  18.                 byte[] u = s2.getBytes("Unicode");
  19.                 for(int i=0;i<u.length;i++)
  20.                 {
  21.                         System.out.println("u[" + i + "]=" + u[i]);
  22.                 }
  23.         }
  24. }
复制代码
具体请看:
http://blog.csdn.net/lubiaopan/article/details/4714909


作者: 张亚青    时间: 2013-3-2 14:57
偏執旳、靑春 发表于 2013-3-2 12:33
这个问题
说简单也简单,说难也难,问题是看你处理的内容是怎么样的?
说白了就是取一个字符,判断一下ASCI ...

这么简单,我还真不知道!!!有时间我再验证一下,先谢过
作者: 张亚青    时间: 2013-3-2 14:58
偏執旳、靑春 发表于 2013-3-2 12:33
这个问题
说简单也简单,说难也难,问题是看你处理的内容是怎么样的?
说白了就是取一个字符,判断一下ASCI ...

这么简单,我还真不知道!!!有时间我再验证一下,先谢过
作者: 黄玉昆    时间: 2013-3-11 12:07
请在截图所示位置修改分类


作者: 张亚青    时间: 2013-3-11 12:35
黄玉昆 发表于 2013-3-11 12:07
请在截图所示位置修改分类

不好意思,刚刚看到,已经改成未解决




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2