CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

老问题,新提法 (java字符串的截取,中英混合,并有其它各种字符,全角半角等.....) 在网上看了很多,都没有一个完善的解决办法

楼主xixi99(惜惜)2003-12-01 15:53:20 在 Java / J2SE / 基础类 提问

也就是一个字符串str,我想得到str.substring(0,   10);   只要不将汉字截成两半就可以了!  
  附加:能跨平台,在windows、linux7.3、linux9.0上都可以通过  
   
  呵呵! 问题点数:0、回复次数:15Top

1 楼jonkeyjohns(JonkeyJohns)回复于 2003-12-01 16:03:26 得分 0

我瞎说说  
  汉字是肯定占两位吗?  
  如果是的话只要判断最后一个字符是否是字母就可以放心的截取了  
   
  如果汉字占一位同上  
   
  如果汉字占两位以上,那么就判断最后(位数-1)个字符是否为字母就可以了。Top

2 楼xmancsdn(飞)回复于 2003-12-01 16:13:44 得分 0

一点拙见,可以判断最后一味字符,只要不是字母就加一位,然后就截取吧Top

3 楼caodavid2003(骆驼祥子)回复于 2003-12-01 16:23:42 得分 0

搂主:在string字串一个中汉字、中文标点只占一位,全角输入的字符或阿拉伯数字也占一位,但将它转化为字节却占两位(即两个字节),如果你想确定你的字符串str是否含有英文(除1、2、3...9、0)以外的编码字符或用全角输入法输入的英文字母和阿拉伯数字,你可用将str字串转化为字节数组(Byte[]),然后比较一下转化前后length的大小;如果buf.length>str.length则说明你的字串可能含有全角输入法输入的字符(包括阿拉伯数字)或中文(包扩中文标点),但不能确定Top

4 楼caodavid2003(骆驼祥子)回复于 2003-12-01 16:26:06 得分 0

用java写的代码都是跨平台的,不需要担心平台问题Top

5 楼sunweijia(sunweijia)回复于 2003-12-01 16:36:30 得分 0

你用一下substring(?,?)和getBytes()看一下结果就知道了Top

6 楼niko7(掠水无痕)回复于 2003-12-01 16:41:37 得分 0

/**  
        *   字符串定长截断函数。  
        *   @param   text   需要截断的字符串  
        *   @param   textMaxChar   需要留下的长度  
        *   @author   niko7@21cn.com        
        *   @return  
        */  
      public   String[]   CutString(String   text,   int   textMaxChar)  
      {  
          int   size,   index;  
          String[]   returnStringArray   =   new   String[2];  
   
          if(textMaxChar   <=   0){  
              returnStringArray[0]   =   text;  
              returnStringArray[1]   =   null;  
          }  
          else{  
              for(size   =   0,   index   =   0;   index   <   text.length()   &&   size   <   textMaxChar;  
                      index++){  
                  size   +=   text.substring(index,   index   +   1).getBytes().length;  
              }  
              returnStringArray[0]   =   text.substring(0,   index);  
              returnStringArray[1]   =   text.substring(index);  
          }  
   
          return   returnStringArray;  
      }Top

7 楼dyroro(粗线条)回复于 2003-12-01 17:26:40 得分 0

“  
  也就是一个字符串str,我想得到str.substring(0,   10);   只要不将汉字截成两半就可以了!  
  附加:能跨平台,在windows、linux7.3、linux9.0上都可以通过  
  ”  
  不清楚楼主问这个问题的做了多少Java的东西,或者说对Java掌握多少。  
  在JAVA中  
  String是如何定义的?  
  Char是如何定义的?  
  所有这些天生就是UNICODE的,怎么会出现汉字被截成两半的现象?  
  况且,你仅仅是用一个substring方法而以。。  
   
  如果谁用这个方法能够做到将汉字截成两半,那才是当真的了不起了。。。Top

8 楼qljsd(我本善良)回复于 2003-12-01 17:32:32 得分 0

str.substring(0,   10)这种方法永远不会出错!!!!  
   
  str.getBytes()有可能!!!Top

9 楼xiaoliang0007(小良_l)回复于 2003-12-01 17:33:05 得分 0

同意楼上的看法  
  substring方法是不会把汉字截成两半的,因为java用的是UNICODETop

10 楼ngqzmjmj(冷酷)回复于 2003-12-01 19:44:08 得分 0

同意楼上的楼上  
  在java   中用的是UNICODE汉字和字母是一样的  
  class   a{  
    public   static   void   main(String[]   args)[  
          String   n="我和ni";  
          String   m=n.substring(0,3);  
          System.out.println("m   ==   "+   m);  
    }  
  }  
  结果为m   ==   我和n;  
  java的优点就是跨平台,这点不用超心Top

11 楼xchfriend(xchfriend)回复于 2003-12-02 12:42:39 得分 0

关注!………………………………Top

12 楼xixi99(惜惜)回复于 2003-12-08 10:34:52 得分 0

楼上各位:  
  你们所讲的方法包括Str.getBytes(),这些我都试过了,不行,在window2k和linux7.3下来出来的结果是不一样的  
  包括所说的str.substring(),也是会出现乱码的,就是最后一个字符可能会出现乱码  
   
  =======================  
   
  我想这应该和系统默认的编码方式有关:  
  ngqzmjmj(冷酷)     应该是在window上面运行的  
  dyroro(粗线条)   java默认的应该是iso8859-1,如果系统是redhat9.0,可能你的程序会出问题  
  niko7(掠水无痕)   在不同的平台下String.getBytes().length出来的结果是完全不一样的Top

13 楼danceflash(Wine)回复于 2003-12-08 13:01:44 得分 0

.substring()不会有问题的  
  我现在做的就是在windows下开发  
  但运行是在Unix下,完全没有问题,substring()这种函数都有用到Top

14 楼xixi99(惜惜)回复于 2003-12-09 11:15:23 得分 0

楼上:  
  请您用locale在您的unix上看一下你的默认编码是iso885915还是gb13030  
   
  再问一下,你的windows和Unix下的字符截取结果一样吧吗??Top

15 楼StarPurple(星紫)回复于 2003-12-09 11:24:20 得分 0

这里N(很)多高手有些地方我看都看不明白~我是新来的请大家多多关照。Top

相关问题

  • 截取字符串
  • 截取字符串
  • 字符串截取
  • 字符串截取
  • 截取字符串
  • 如何截取字符串?
  • 字符串截取问题
  • 字符串截取问题
  • 字符串截取问题
  • 字符串的截取

关键词

  • 字符
  • 汉字
  • 字母
  • 转化
  • 中文
  • 字符串
  • 截取
  • textmaxchar
  • 阿拉伯数字
  • 全角

得分解答快速导航

  • 帖主:xixi99

相关链接

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

广告也精彩

反馈

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