Search code examples
matlabprefix

Prefix match in MATLAB


Hey guys, I have a very simple problem in MATLAB:

I have some strings which are like this:

Pic001
Pic002
Pic003
004

Not every string starts with the prefix "Pic". So how can I cut off the part "pic" that only the numbers at the end shall remain to have an equal format for all my strings?

Greets, poeschlorn


Solution

  • If 'Pic' only ever occurs as a prefix in your strings and nowhere else within the strings then you could use STRREP to remove it like this:

    >> x = {'Pic001'; 'Pic002'; 'Pic003'; '004'}
    
    x = 
    
        'Pic001'
        'Pic002'
        'Pic003'
        '004'
    
    >> x = strrep(x, 'Pic', '')
    
    x = 
    
        '001'
        '002'
        '003'
        '004'
    

    If 'Pic' can occur elsewhere in your strings and you only want to remove it when it occurs as a prefix then use STRNCMP to compare the first three characters of your strings:

    >> 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'