Search code examples
stringmatlabif-statement

How to check a pattern in a string in matlab?


I want to check if a specific pattern was in a string to do some action

[filename pathname]=uigetfile
fullpath=[pathname filename]

In my program I will only browse for Pictures , all pictures are named with that pattern

*_cam1.jpg , *_cam1.jpg , *_cam2.jpg *_cam2.jpg , *_cam3.jpg

What I want to do to check if the image ends with cam1 then do some logic

if (filename.contain(cam1)
 then imread('1.jpg')
elseif (filename.contain(cam2)
 then imread ('2.jpg)

I know that there no method called 'contain' in matlab but this is an example to demonstrate what I want.


Solution

  • For more complex searches you can use regular expressions, but in this simple case a string comparison is enough.

    % Let the user choose only files that end in .jpg
    [filename pathname]=uigetfile('*.jpg');
    % Use fullfile to join file parts! It is OS independent. 
    fullpath=fullfile(pathname, filename);
    
    if length(filename) > 8 && strcmp(filename(end-8:end),'_cam1.jpg')
        stuff = imread(fullpath);
        ...
    elseif length(filename) > 8 && strcmp(filename(end-8:end),'_cam2.jpg')
        stuff = imread(fullpath);
        ...
    end
    

    It is not the most glamorous code, but it should get the job done.