从matlab中的字符串中提取前4个字母

时间:2011-04-04 22:33:07

标签: matlab string

如何提取字符串示例的前4个或中间4个或后4个字母:当字符串读取01 ED 01 F9 81 C6?

3 个答案:

答案 0 :(得分: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的数组(或向量)中的第一个char。

答案 1 :(得分: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处理字符数组的多行,将空间移除的结果转换回2D数组,然后引用额外的维度:

 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

答案 2 :(得分:0)

正如提到的trolle3000和b3,你使用包含索引的括号来提取字符串的子集。

要回答有关如何处理字符串的其他问题,我建议您在每个空格处拆分字符串,并将十六进制转换为十进制数。

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

ans =   
     1
   237
     1
   249
   129
   198