(Not recommended) Find possible matches for string
strmatch is not recommended. Use startsWith, strncmp, or validatestring, depending on your requirements, instead.
startsWith and strncmp return a logical array
indicating which array elements begin with the specified string, whereas
validatestring returns a single string that represents the best
match to the specified string. See Example 2, below.
To find an exact match for a string, use strcmp.
x = strmatch(str, strarray)
x = strmatch(str, strarray, 'exact')
x = strmatch(str, strarray) looks through the
rows of the character array or cell array of character vectors strarray
to find character vectors that begin with the text contained in str, and
returns the matching row indices. If strmatch does not find
str in strarray, x is an empty
matrix ([]). Any trailing space characters in str or
strarray are ignored when matching. strmatch is
fastest when strarray is a character array.
x = strmatch(str, strarray, 'exact') compares
str with each row of strarray, looking for an
exact match of the entire character vector. Any trailing space characters in
str or strarray are ignored when matching.
The statement
x = strmatch('max', char('max', 'minimax', 'maximum'))returns x = [1; 3] since rows 1 and 3 begin with
'max'. The statement
x = strmatch('max', char('max', 'minimax', 'maximum'),'exact')returns x = 1, since only row 1 matches 'max'
exactly.
This example shows how to replace use of the strmatch function
with validatestring or strncmp.
To start with, use strmatch to return the index of those
elements for which there is a match:
list = {'max', 'minimax', 'maximum', 'max'}
x = strmatch('max',list)
x =
1
3
4validatestring returns the string representing the best match. If
multiple or no matches exist, this statement would return an error:
list = {'max', 'minimax', 'maximum', 'max'};
x = validatestring('max', list)
x =
maxstrncmp returns a logical array indicating which strings match
the specified string:
list = {'max', 'minimax', 'maximum', 'max'};
x = strncmp('max', list, 3)
x =
1 0 1 1If you prefer that MATLAB return the numeric indices of list, use
find as follows:
list = {'max', 'minimax', 'maximum', 'max'}
x = find(strncmp(list, 'max', 3))
If your input to strmatch is a character array with multiple rows,
then first convert the character array to a cell array using cellstr. Then, pass the output from cellstr to
strncmp or validatestring