CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

怎样区分中文英文和特殊字符????

楼主chongchonglong(SMFL)2005-02-16 11:18:01 在 Java / Web 开发 提问

在java中有个字符串   "我的编号是123-44(男),呵呵""123我的编号是123-44(男),呵呵"   这两句中如何动态取出中文“我的编号是”"男"。  
  不是找到第几个字符截取那种.是根据找到这两句中的中文去出来。  
  谢谢先!!! 问题点数:10、回复次数:16Top

1 楼singedcat(以夢為馬)回复于 2005-02-16 12:02:27 得分 0

新春愉快!Top

2 楼ybt631(默默耕耘!)回复于 2005-02-16 12:17:19 得分 3

for(int   i=0;str[i]!='\0';i++)  
  if(str[i]<0)    
  {System.out.println(str[i]+str[i+1]);  
  i++;  
  }  
  汉字就是由2个负数(每个数一个字节)组成的Top

3 楼ybt631(默默耕耘!)回复于 2005-02-16 12:22:55 得分 0

忘了  
  也祝大家新年愉快  
  第一次来这,希望大家多多关照Top

4 楼chongchonglong(SMFL)回复于 2005-02-16 12:48:44 得分 0

给大家也拜个晚年。。。。!!!!!!!!!!  
  Top

5 楼chongchonglong(SMFL)回复于 2005-02-16 13:18:51 得分 0

可是怎样把string类型的弄成str[i]啊。偶不太会啊。呵呵。Top

6 楼Chinatosun(继续努力 UML系统分析 )回复于 2005-02-16 13:24:01 得分 0

gzTop

7 楼007james(苏乞儿)回复于 2005-02-16 13:32:09 得分 0

学习中...Top

8 楼chongchonglong(SMFL)回复于 2005-02-16 14:07:42 得分 0

自己顶。。。Top

9 楼cslyaoyao(笑对人生)回复于 2005-02-16 15:24:27 得分 5

我刚帮你测了一把,可以实现,你自己参考一下,只是我不明白为什么将字符串以"Unicode"形式转成字节数组后,前两个字节的内容会是-1,-2   .  
   
  public   class   test{  
   
          public   static   void   main(String[]   args)   throws   Exception{  
                  String   str1   =   "我的编号是123-44(男)";                  
                  String   str2   =   "123我的编号是123-44(男)";  
                  System.out.println(str1   +   "   中的中文文字为:"   +   getChineseCharacter(str1));  
                  System.out.println(str2   +   "   中的中文文字为:"   +   getChineseCharacter(str2));  
                   
          }  
           
          public   static   String   getChineseCharacter(String   str)   throws   Exception{  
                  StringBuffer   outStr   =   new   StringBuffer();  
                  byte[]   bytes   =   str.getBytes("Unicode");  
                  byte[]   tmp   =   new   byte[4];  
                  int   i   =   0;  
                  int   len   =   bytes.length;  
                  tmp[0]   =   -1;  
                  tmp[1]   =   -2;  
                  for   (   i   =   2   ;   i   <=   (   len   -   2   )   ;   i   +=   2){  
                          if   (   bytes[i+1]   !=   0   ){  
                                  tmp[2]   =   bytes[i];  
                                  tmp[3]   =   bytes[i+1];  
                                  outStr.append(new   String(tmp,"Unicode"));  
                          }  
                  }  
                  return   outStr.toString();  
          }  
  }Top

10 楼ybt631(默默耕耘!)回复于 2005-02-16 15:26:03 得分 0

这个我也不太会,不知道java里面String类是怎么会事。  
  以前是学c/c++的,最近才开始学的java,想选择一个网上能现下现用的java编译器  
  谁能推荐推荐。  
  Top

11 楼cslyaoyao(笑对人生)回复于 2005-02-16 15:33:48 得分 0

还有最好的一种转换方法:  
        public   static   String   getChineseCharacter(String   str)   throws   Exception{  
                  StringBuffer   outStr   =   new   StringBuffer();  
                  byte[]   bytes   =   str.getBytes();  
                  byte[]   tmp   =   new   byte[2];  
                  int   i   =   0;  
                    for   (   i   =   0   ;   i   <   bytes.length;   i   ++   ){  
                          if   (   bytes[i]   <   0   ){  
                                  tmp[0]   =   bytes[i];  
                                  tmp[1]   =   bytes[++i];  
                                  outStr.append(new   String(tmp));  
                          }  
                  }  
                  return   outStr.toString();  
          }  
   
  另外:ybt631(需要拼命)   回复的把两个字节直接加起来是不行的,为什么的话自己想罗Top

12 楼chongchonglong(SMFL)回复于 2005-02-16 16:05:41 得分 0

cslyaoyao(笑对人生)  
  谢谢你了。  
  你说的那个-1,-2   是不是你用了tmp[1]=-1   tmp[2]=-2   。而后的复值是用到了tmp[3]timp[4]身上。  
  输出的可就是tmp了。  
  我的机器现在每法实验。回家后偶在试试。不过我看可以的。只是对于  
    StringBuffer   outStr   =   new   StringBuffer();  
    outStr.append(new   String(tmp));  
  我还不懂。合乎。以前没有用过的嘛。Top

13 楼cslyaoyao(笑对人生)回复于 2005-02-16 16:40:30 得分 0

就是往   outStr   的字符串最后加一个新的字符串了,比单位的两个String相加效果高。Top

14 楼ybt631(默默耕耘!)回复于 2005-02-16 18:25:03 得分 0

to:cslyaoyao(笑对人生)  
  为什么不行??  
  请注意我的程序:  
  for(int   i=0;str[i]!='\0';i++)  
  if(str[i]<0)    
  {System.out.println(str[i]+str[i+1]);  
  i++;//这个地方  
  }  
  防止了相邻2个汉字的头尾相连组成一个不同的汉字。Top

15 楼ETUFO(诺)回复于 2005-02-16 20:51:09 得分 2

String   s="我的编号是123-44(男),";  
  char[]   cs=s.toCharArray();  
  StringBuffer   sb=new   StringBuffer();  
  for(int   i=0;i<cs.length;i++){  
      if(cs[i]<127)   continue;  
      sb.append(csf[i]);  
  }  
  s=sb.toString();  
  现在s就是你想要的字符串了。  
  Top

16 楼chongchonglong(SMFL)回复于 2005-02-17 09:49:27 得分 0

cslyaoyao(笑对人生)谢谢.试验了下.正确.  
    ETUFO(诺)   谢谢.你的方法好像也是不显示.  
    ybt631(需要拼命)   谢谢.下面是我按你的方法做的试验.呵呵.可能方法不对.不过没有显示.我也不知道为什么.你和(诺)我用的输出显示是一样的.是不是那里有问题了.判断是否是中文这个地方是没有问题了.不一样的就是(笑对人生)用的是.append(new   String(str))了.  
  大家帮忙试试是什么问题了.呵呵.  
  public   class   text{  
   
          public   static   void   main(String[]   args)   throws   Exception{  
                  String   str1   =   "我的编号是123-44(男)";                  
                  String   str2   =   "123我的编号是123-44(男)";  
                  System.out.println(str1   +   "   中的中文文字为:"   +   getChineseCharacter(str1));  
                  System.out.println(str2   +   "   中的中文文字为:"   +   getChineseCharacter(str2));  
                   
          }  
           
          public   static   String   getChineseCharacter(String   st)   throws   Exception{  
          StringBuffer   br=new   StringBuffer();  
                  char[]   str=st.toCharArray();  
                  for(int   i=0;i<str.length;i++)  
  if(str[i]<0)    
  {  
  br.append(str[i]+str[i+1]);  
  i++;//这个地方  
  }  
                  return   br.toString();  
          }  
  }Top

相关问题

  • 如何区分字符串中的中文和英文?
  • 提问,有1个字符串,怎么从该字符串中区分中文和英文或数字!
  • 在一个字符串中如何将中文与英文及其它采用宽字符的语言区分开
  • 英文字符和中文字符的长度如何比较?
  • 怎么解决mysql中,当有中文和英文的字符串需要比较相等时,不能区分大小写!
  • SQL中有没有办法区分数字和中文字符?
  • 如何截取字符串(中文英文字符都有)为定长字串??
  • 欢迎献计献策:中文字符转换为英文字符
  • 怎样把dbgrid字段上英文字符转换成中文字符!!!
  • 请问怎样判断一个字符是中文字符还是英文字符?(空)

关键词

  • 字符
  • 中文
  • 男
  • 找到
  • 编号
  • str

得分解答快速导航

  • 帖主:chongchonglong
  • ybt631
  • cslyaoyao
  • ETUFO

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo