Topic: 字节数组转化为String字符串随机截取的方法? |
Print this page |
1.字节数组转化为String字符串随机截取的方法? | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-07 14:58 比如我有一个字符串 str="123abc中文显示",我现在获取str的字节数组 byte[] b=str.getBytes(),然后我要实现一个方法: String Convert(byte[] b,int offset,int length ) { //实现将byte[]类型转换为String类型 } 三个参数中,第一个是要转化的字节数组,第二个是开始的位移量,第三个是要转化的字节数。这个方法的功能就是要把字节数组b还原为str,如果offset=0,length=b.length,返回值会正常显示。但是,如果我随机设置offset和length的长度,问题就出现了: 比如 System.out.println(Convert(b,0,7)); 结果是 123abc? 出现问号的原因是"中"字占了两个字节,而length=7刚好读到"中"的第一个字节,因此无法正常显示。 如果使用substring方法,那么所有的字符都是按双字节输出,那么 System.out.println(Convert(b,0,8)); 结果是123abc中文 读取字节的长度length=8还没有度到"文"的字节的时候,"文"就已经读出来了,这样不是想要的结果,因为参数length是字节的长度。 请教怎么样才能在我随机设置offset和length的情况下,单字节和双字节混合都能正常显示,如果恰好读到一个双字节的第一个字节的时候,那么就不要显示这个双字节了,也就是不要出现问号,请问该怎么实现? |
2.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-08 09:38 怎么没有人回复啊?? 这个问题很棘手啊!!!! |
3.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: why Posted on: 2005-09-08 10:04 > 怎么没有人回复 It's less than a day... and as you said : 这个问题很棘手 I don't have experience with double-byte characters, but I guess the first (hi) byte of a double-byte character would be certain range of values other than those of regular alpha-numeric characters (and punctuation marks as well). (Frankly I won't reply if you haven't sent me a PM.) |
4.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-08 11:10 谢谢你的回复,目前我解决了一部分,基本上可以实现了 主要就是添加一个对双字节和单字节的判断,然后就可以对length变量进行设定了 |
5.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: zcjl Posted on: 2005-09-08 11:41 曾经写过类似的程序,不过不在公司的开发机上 等我回家看看能否找到 |
6.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-08 18:29 唉,还是有问题,无法读取传入位移和长度的字节,虽然已经没有乱码了! 谁来救救我! |
7.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: zcjl Posted on: 2005-09-08 22:11
这是我以前写的一个关于截断字符串的方法,不知道对你是否有用? |
8.Re:字节数组转化为String字符串随机截取的方法? [Re: GlennLi] | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-09 09:58 谢谢楼上这么热心,我试了你的方法,是可行的。 但是,那是输出从字符串开头到指定字节长度byteLength的子字符串。 如果我的起始位置不是开头就有问题,因为我要实现的方法里面有一个offset参数就是来告诉从哪个起始位置开始读byteLength长度的子字符串,如果我开始就读的是双字节的一个字节就会出问题。我试着从你的方法中加入offset,但是不行,因为你是根据byteLength和str.length()的比较来判断是否读到双字节的其中一个字节,如果我随机加入一个offset,这个判断就没有意义了,不知道我这样想对不对?再次谢谢楼上这么热心!如果你想出我的问题的解决办法,麻烦你告诉我,我这两天要交任务了,崩溃中... |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |