2013-02-18 35 views
0

我有一个二进制字符串,我想拆分。字符串的长度是可变的,需要分成3个部分;标记,索引和块偏移。我有索引和块偏移量的长度,但不是标签,我试图将标签与字符串的其余部分分开。有没有办法做到这一点,当索引和块偏移量的长度已知? (我想他们向后分裂因为标签的长度是可变的,但偏移的索引和块是常数)如何分割一个字符串在java中倒退


实施例(写在十六进制为简单起见):

String[1]: 400341a0 
String[2]: df7c48 
index length: 2 hex 
block offset length: 3 hex  
Output[0]: {400, 34, 1a0} 
Output[1]: {d, f7, c48} 
+2

简单的'substring'会给你你想要的东西。 – 2013-02-18 15:10:03

+0

当你用十六进制编写“为了简单” - 你的字符长度或位数?如果它是前者,那么它很简单,但如果它是后者,那么'String'可能是您的参数的错误数据类型(因为它们是*字符数组的包装* - 与位无关)。 – 2013-02-18 15:12:31

+0

也值得考虑[apache commons substring](http://commons.apache.org/lang/api/org/apache/commons/lang3/StringUtils.html#substring(java.lang.String,%20int))支持传递负面指数从后面算起。 – sbk 2013-02-18 15:13:13

回答

2

不确定+ -1,但我认为这很好。

int length = s.length; 
int blockOffsetIndex = length - BLOCK_OFFSET_LENGTH; 
blockOffset = s.substring(blockOffsetIndex - 1, length); 

int indexIndex = blockOffsetIndex - INDEX_LENGTH; 
indexStr = s.substring(indexIndex - 1, indexIndex + INDEX_LENGHT); 

rest = s.substring(0, indexIndex -1); 

由于@sdk建议,Apache StringUtils也是一个很好的解决方案。

+0

非常感谢你的帮助。 – 2013-02-18 16:34:42