Префикс соответствия в MATLAB - PullRequest
0 голосов
/ 23 февраля 2011

Эй, ребята, у меня очень простая проблема в MATLAB:

У меня есть несколько строк, которые похожи на это:

Pic001
Pic002
Pic003
004

Не каждая строка начинается с префикса «Pic». Итак, как я могу отрезать часть «рис», чтобы только цифры в конце оставались одинакового формата для всех моих строк?

Привет, poeschlorn

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Если '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'
0 голосов
/ 23 февраля 2011
strings = {'Pic001'; 'Pic002'; 'Pic003'; '004'};
numbers = regexp(strings, '(PIC)?(\d*)','match');
for cc = 1:length(numbers); 
    fprintf('%s\n', char(numbers{cc}));
end;
...