2011-04-04 3668 views

回答

14

一個字符串被視爲一個字符向量。嘗試:

>> string = '01 ED 01 F9 81 C6'; 
>> string(1:5), string(6:11), string(12:17) 

ans = 
01 ED 

ans = 
01 F9 

ans = 
81 C6 

string在這個例子中是一個變量而不是方法。 string(1)返回數組(或向量)中名爲string的第一個字符。

4

如果你只想要非空白字符,你可以使用ISSPACE功能刪除空格,然後字符數組索引來訪問字符:

 
>> s = '01 ED 01 F9 81 C6'; 
>> s = s(~isspace(s)) 

s = 

01ED01F981C6 

>> s(1:4) 

ans = 

01ED 

>> s(5:8) 

ans = 

01F9 

>> s(9:end) 

ans = 

81C6 

您可以擴大該處理的多條線路使用RESHAPE到該空間去除的結果變換回二維數組,然後引用該額外維度字符數組:

 
s = ['01 ED 01 F9 81 C6'; 'F8 CA DD 04 44 3B'] 

s = 

01 ED 01 F9 81 C6 
F8 CA DD 04 44 3B 

>> s = reshape(s(~isspace(s)), size(s, 1), 12) 

s = 

01ED01F981C6 
F8CADD04443B 

>> s(:,1:4) 

ans = 

01ED 
F8CA 

>> s(:,5:8) 

ans = 

01F9 
DD04 

>> s(:,9:end) 

ans = 

81C6 
443B 
+0

@ trolle3000和B3:感謝,但如果該文件有一堆值的 'C1 F3 F6 81 81 C5' '01 F0 41 F7 01 C6 ' '41 ED C1 F7 01 C6' 然後我如何處理它? – Dilip 2011-04-05 09:16:47

+0

@Dilip:見上面我編輯的答案,它描述瞭如何處理多行。 – 2011-04-05 17:03:28

0

作爲trolle3000和B3所提到的,使用含有在括號骰子來提取字符串的子集。

要回答關於如何處理字符串的額外問題,我建議您在每個空間拆分字符串,並將其從十六進制轉換爲十進制數字。

s = '01 ED 01 F9 81 C6'; 
hex2dec(regexp(s, ' ', 'split')) 

ans = 
    1 
    237 
    1 
    249 
    129 
    198 
+0

謝謝,但我的問題是我有4000行十六進制代碼的文件我想批量拆分它們,我該怎麼做? – Dilip 2011-04-05 11:09:01