MATLAB中的前缀匹配

时间:2011-02-23 12:07:09

标签: matlab prefix

嘿伙计们,我在MATLAB中遇到一个非常简单的问题:

我有一些像这样的字符串:

Pic001
Pic002
Pic003
004

并非每个字符串都以前缀“Pic”开头。那么我怎样才能切断“pic”部分,即只有最后的数字才能保持所有字符串的格式相同?

Greets,poeschlorn

2 个答案:

答案 0 :(得分:1)

如果'Pic'只作为字符串中的前缀而在字符串中的其他位置出现,那么您可以使用STRREP将其删除,如下所示:

>> x = {'Pic001'; 'Pic002'; 'Pic003'; '004'}

x = 

    'Pic001'
    'Pic002'
    'Pic003'
    '004'

>> x = strrep(x, 'Pic', '')

x = 

    '001'
    '002'
    '003'
    '004'

如果'Pic'可以出现在字符串的其他位置,并且您只想在它作为前缀出现时删除它,那么使用STRNCMP来比较字符串的前三个字符:

>> x = {'Pic001'; 'Pic002'; 'Pic003'; '004'}

x = 

    'Pic001'
    'Pic002'
    'Pic003'
    '004'

>> for ii = find(strncmp(x, 'Pic', 3))'
x{ii}(1:3) = [];
end
>> x

x = 

    '001'
    '002'
    '003'
    '004'

答案 1 :(得分:0)

strings = {'Pic001'; 'Pic002'; 'Pic003'; '004'};
numbers = regexp(strings, '(PIC)?(\d*)','match');
for cc = 1:length(numbers); 
    fprintf('%s\n', char(numbers{cc}));
end;