日期:2014-05-20  浏览次数:20661 次

JAVA处理中英混合的字符串的问题,郁闷。
JAVA处理字符串时,一个汉字算一个字符,这时处理中英文混合的字符串时就遇到了麻烦。
现在要从服务器接收字符串,是中英文都有的,收到后,往里面相应的地方插入分隔符,然后再发给其他客户端,具体是这样的,收到的字符串格式为
书名                                 作者             出版社                                                 000000金额
|-------20字节-----|--10字节-|---------30字节--------------|--10字节-|
现在收到该字符串后,要在书名、作者、出版社我金额后插入一个分隔符 "| ",如果中文按两个字节算的话,那么我只要数前20个字节那就是书名,插入一个分隔符,再数10个字节,就是作者,插入一个分隔符....
但现在Java一个汉字算一个字符,那么我用insert插入就会出问题。
假如字符串是这样的
Delphi5实务经典           林金霖         中国铁道出版社                                 0000007800
Java自学教程                 叶至军         人民邮电出版社                                 0000004800
如果我用Str.insert(20,   "| ")插入,那就不会得到
Delphi5实务经典           |林金霖         |中国铁道出版社                                 |0000007800
Java自学教程                 |叶至军         |人民邮电出版社                                 |0000004800
的格式。
我实在是没有一点办法了。

------解决方案--------------------
String str = "中国人料理中国人 中国人料 中国人料理中国人料理中国人料理 中国人料理 ";
byte[] bt = str.getBytes();
String strName = new String(bt,0,20) + "| "
+ new String(bt,20,10) + "| "
+ new String(bt,30,30) + "| "
+ new String(bt,60,10) + "| ";
System.out.println(strName);