怎么在byte[]中动态添加byte

kingofworl 2005-12-17 01:04:15
如何实现 String txt="hello world|大家好|才是真的好";
byte[]by=txt.getBytes();

如果by[i]==124 也就是"|",那么在前面添加一个空格,
new String(by) 是"hello world |大家好 |才是真的好"

顺便问一下,用流的方式下载文本文件时如果不指定编码方式默认GBK吗,这个到底是根据什么决定的
我现在取的一小部分数据有一些问题,比如: 醇襹 (B2 B4 D2 7C),它会把7c占用了,这是分隔符,不能没有,我在自己机器开发时指定GB2312就可以按7c分隔了,不过不知怎么回事,单位的AIX主机上执行后汉字全变成?了,不得已出此下策

...全文
2721 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingofworl 2005-12-17
  • 打赏
  • 举报
回复
replaceAll("\\|"," \\|")
是不可能的,因为直接看不到"|",它被前一个字节强拉在一起组成一个汉字,已经不是“显式”的了
believefym 2005-12-17
  • 打赏
  • 举报
回复
replaceAll("\\|"," \\|")不就可以了

byte[]by=txt.getBytes();

如果by[i]==124 也就是"|",那么在前面添加一个空格,
new String(by) 是"hello world |大家好 |才是真的好"
----------------
这样的话数组长度都确定了再添加应该是不行的,除非新建一个数组,再拷贝添加
liu_you 2005-12-17
  • 打赏
  • 举报
回复
UNIX下set LANG=zh_CN.GBK
yuzl32 2005-12-17
  • 打赏
  • 举报
回复
即是数组,也可以通过转换为String(用new String(byte[] arr)),然后再用上面的办法,也是可以的啊
yuzl32 2005-12-17
  • 打赏
  • 举报
回复
把String中字符'|'的位置找出来(pos = str.indexOf('|')),再用substring截取出来添加空格进去不可以吗? 为什么要转换为数组呢?
kingofworl 2005-12-17
  • 打赏
  • 举报
回复
我都蒙了,谁能写个小例子,谢谢大家
treeroot 2005-12-17
  • 打赏
  • 举报
回复
北极猩猩 2005-12-17
  • 打赏
  • 举报
回复
如果楼主要通过字节数组来做的话,建议扫描替换的时候从后向前做,这样可以提高效率,减少数据移动次数
kingofworl 2005-12-17
  • 打赏
  • 举报
回复
liu_you说的很对,目前在我开发机上
BufferedReader buffer = new BufferedReader(new InputStreamReader(
new FileInputStream(file),"GB2312"));
while ((txt = buffer.readLine()) != null) {……}


指定gb2312 或者 byte[]by=txt.getBytes();
String bbb=new String(by,"GB2312");
都是可以的,不过放到unix服务器上就变样了,不知怎么办好了
liu_you 2005-12-17
  • 打赏
  • 举报
回复
file.encoding=GBK,getBytes()的缺省编码取file.encoding.
ps:
String.replaceAll与编码没关系,他是走char的.只要取出来的String已经成了正确的char,replaceAll就能正确执行.

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧