我正在使用airlift.joni,一个新的正则表达式框架。 这个框架的主要功能是将字符串更改为byte [],然后执行正则表达式匹配和类似的工作。 但由于所有元素都是byte [],我不能在字符串中使用replace函数,并且必须编写自己的替换函数。
我可以在byte []中获取待替换模式的开始和结束,但不知道用新byte []替换它的正确方法是什么。
说我们有一个
byte[] A = new byte[10];
我想用A
替换A [2]到A [3]byte[] B
其长度不得为2。 有一些好方法可以做到这一点吗? 我只想创建一个长度为A.length + B.length-2的新数组并复制每个相应的字节,但这会使代码太长。
答案 0 :(得分:8)
您必须为结果分配一个新数组,然后使用System.arraycopy。
byte[] a = /*Allocated and initialized elsewhere*/;
byte[] b = /*Allocated and initialized elsewhere*/;
int replaceStart = 2; // inclusive
int replaceEnd = 4; // exclusive
byte[] c = new byte[a.length - (replaceEnd - replaceStart) + b.length];
System.arraycopy(a, 0, c, 0, replaceStart);
System.arraycopy(b, 0, c, replaceStart, b.length);
System.arraycopy(a, replaceEnd, c, replaceStart + b.length, a.length - replaceEnd);