2013-02-18 84 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