gpt4 book ai didi

java - 在java中有什么好的方法可以用不同长度的字节[]替换字节[]的一部分吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:01 26 4
gpt4 key购买 nike

我正在使用 airlift.joni,这是一个新的正则表达式框架。该框架的主要功能是将字符串转换为字节[],然后进行正则表达式匹配等类似工作。但由于所有元素都是 byte[],我不能在字符串中使用替换函数,必须编写自己的替换函数。

我可以在 byte[] 中获取待替换模式的开始和结束,但不知道用新的 byte[] 替换它的正确方法是什么。

假设我们有一个

byte[] A = new byte[10];

我想用一个

替换 A[2] 到 A[3]
byte[] B

长度不能为2。有什么好方法可以做到这一点吗?我只是想创建一个长度为 A.length+B.length-2 的新数组并复制每个相应的字节,但这会使代码太长。

最佳答案

你必须为结果分配一个新数组然后使用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);

关于java - 在java中有什么好的方法可以用不同长度的字节[]替换字节[]的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com