编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 
我在网上搜了一些,都是输出的都是字符的个数,而不是根据字节来输出的!!!
哪位牛人能给个正确的答案,谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jolianasd】截止到2008-07-11 13:41:20的历史汇总数据(不包括此帖):
    发帖的总数量:23                       发帖的总分数:300                      每贴平均分数:13                       
    回帖的总数量:17                       得分贴总数量:1                        回帖的得分率:5%                       
    结贴的总数量:16                       结贴的总分数:200                      
    无满意结贴数:1                        无满意结贴分:0                        
    未结的帖子数:7                        未结的总分数:100                      
    结贴的百分比:69.57 %               结分的百分比:66.67 %                  
    无满意结贴率:6.25  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    是在java里弄吧?你的理解有问题哦,JAVA里面任何一个字符都是2 个字节。你说的 如“我ABC”4,应该截为“我AB”,是错误的吧。截取4个字节,应该是"我A"就是4个字节了。呵呵,不信你可以使用"我A".getBytes().length()打印一下结果。
      

  3.   

    要看编码了.如果是GBK的话,两个字节表示一个汉字.要是UTF-8的话,大部分汉字都是3个字节表示的,不好定位.扩展ASCII编码,汉字好像也有3个字节的.如果是GBK的话,可以编一个简单的小程序试一下.
    原理如下:
    一个字节8比特,字母和数字的编码,第一个比特都是0,这于ASCII编码是相同的.
    如果是汉字,则表示汉字的两个字节,有个共同特点,就是这两个字节,他们的第一个比特都是0.
    这样的话,楼主在截取的时候,判断最后一个字节,如果这个字节b,它满足b&0x80>0那么就去掉这个字节.
    这样就可以了.