java - 如何删除十六进制格式字符串的一些中间部分以获得新字符串?

标签 java android string hex substring

十六进制流:

String hexCodeFromBB = "7D44 13 05 00 06 0E 01 11 13 04 03 03 00 FE E0 AD AP 06 08 01 02 03 04 05 06 07 08 14 00 FD 14 02 11 05 01 0C 霸权 1 2 3 4 5 6C C2";

想把这个字符串改成-

String newHexCodeFromBB = "7D44 13 03 00 FE E0 AD AP 06 08 01 02 03 04 05 06 07 08 14 00 FD 14 02 11 05 01 0C H E G E M O N 1 2 3 4 5 6C C2";

所以我想要的就是摆脱字符串 hexCodeFromBB 中的那些粗体字节。

这就是我尝试过的-

String codeSplitter[] = hexCodeFromBB.split(" ");

//newHexCodeFromBB = hexCodeFromBB.replace(hexCodeFromBB.substring(2,10),"");

newHexCodeFromBB = hexCodeFromBB.replace(hexCodeFromBB.substring(hexCodeFromBB.indexOf(codeSplitter[2]),hexCodeFromBB.indexOf(codeSplitter[10])),"");

这是不正确的。

我正在-

newHexCodeFromBB = "7D44 13 03 03 00 FE E0 AD AP 06 08 01 02 03 04 05 06 07 08 14 00 FD 14 02 11 05 01 0C H E G E M O N 1 2 3 4 5 6C C2";

我以为我错过了一个(上面粗体的那个),尽管没有理由我尝试了-

newHexCodeFromBB = hexCodeFromBB.replace(
         hexCodeFromBB.substring(
            hexCodeFromBB.indexOf(codeSplitter[2]),
            hexCodeFromBB.indexOf(codeSplitter[11])),"");

但同样的输出。

最佳答案

codeSplitter[10] 交换到 codeSplitter[11] 时遇到的问题是这两个值包含相同的字符串: “03” 因此,您从调用索引中获得的索引对于两者来说是相同的,因此输出结果相同。

给定这个字符串,您的元素大小为 3 个字符宽,有两个十六进制数字和一个空格。您可以通过找到所需的最后一个位置的索引并向其添加 3 来解决此解决方案,就像在这个ideone中一样: http://ideone.com/Pem3Bt .

但是,这样做的问题是,如果在字符串的开始部分和结束部分之间出现相同类型,那么您需要更改计算索引的方式。

附录

另一种解决方案(假设您总是删除字符串的 2 到第 10 个十六进制部分,您可以使用如下所示的内容: http://ideone.com/kUQSHc 计算子字符串的索引。

int start = 2 * 3 + 2;
int end = 11 * 3 + 2;

在这些计算中,3 是我们要跳过的字符数,+ 2 是一个调整,因为第一个“组”十六进制字符的长度是 4 个字符,而不是 3 个。从第二组的索引开始,因为子字符串从起始索引(包含)开始,而我使用第 11 组起始索引,因为子字符串将停止在最后一个索引(包含)。这会切掉字符串的所需部分。

警告

如果你使用我在这里提出的方法它会做出一些假设,最重要的是字符串的格式不会改变。只要索引仅指向两个字符组,它们就可以更改。您可能需要对字符串进行更多探索才能实际计算出您真正想要剪切的位置。

关于java - 如何删除十六进制格式字符串的一些中间部分以获得新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22381489/

相关文章:

java - NumberformatException JFreeChart

绘制列表时发生 Java 错误

java - FLAG_NOT_TOUCH_MODAL 不工作/Android

android - 检查密码是否存在并在锁定屏幕上启用 - Android

c++ - 如何使一个函数同时适用于字符串和 wstring?

java - 针对未命中 Controller 的 400 个请求返回自定义错误消息

Java : Create new ArrayLists based on some condition from existing ArrayList

android - 如何在点击推送通知消息时打开特定 fragment ?

string - 如何用tcl脚本替换字符串中的特定字符?

c# - 如何更改 RichTextBox 中指定行的格式