如何提取字符串示例的前4個或中間4個或後四個字母:當字符串讀取01 ED 01 F9 81 C6?從matlab中的字符串中提取前4個字母
10
A
回答
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所提到的,使用含有在括號骰子來提取字符串的子集。
要回答關於如何處理字符串的額外問題,我建議您在每個空間拆分字符串,並將其從十六進制轉換爲十進制數字。
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
@ 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
@Dilip:見上面我編輯的答案,它描述瞭如何處理多行。 – 2011-04-05 17:03:28