(Не рекомендуемый), Находят возможные соответствия для строки
strmatch не рекомендуется. Используйте startsWith, strncmp или validatestring, в зависимости от ваших требований, вместо этого. startsWith и strncmp возвращают логический массив, указывающий, какие элементы массива начинаются с заданной строки, тогда как validatestring возвращает одну строку, которая представляет лучшее соответствие заданной строке. Смотрите Пример 2, ниже.
Чтобы найти точное совпадение для строки, используйте strcmp.
x = strmatch(str, strarray)
x = strmatch(str, strarray, 'exact')
x = strmatch(str, strarray) просматривает строки символьного массива или массива ячеек из символьных векторов strarray, чтобы найти векторы символов, которые начинаются с текста, содержавшегося в str, и возвращает соответствующие индексы строки. Если strmatch не находит str в strarray, x является пустой матрицей ([]). Любые символы конечного пробела в str или strarray проигнорированы при соответствии. strmatch является самым быстрым, когда strarray является символьным массивом.
x = strmatch(str, strarray, 'exact') сравнивает str с каждой строкой strarray, ища точное совпадение целого вектора символов. Любые символы конечного пробела в str или strarray проигнорированы при соответствии.
Оператор
x = strmatch('max', char('max', 'minimax', 'maximum'))возвращает x = [1; 3], поскольку строки 1 и 3 начинаются с 'max'. Оператор
x = strmatch('max', char('max', 'minimax', 'maximum'),'exact')возвращает x = 1, поскольку только строка 1 совпадает с 'max' точно.
Этот пример показывает, как заменить использование функции strmatch с validatestring или strncmp.
Прежде всего, используйте strmatch, чтобы возвратить индекс тех элементов, для которых существует соответствие:
list = {'max', 'minimax', 'maximum', 'max'}
x = strmatch('max',list)
x =
1
3
4validatestring возвращает строку, представляющую лучшее соответствие. Если бы несколько или никакие соответствия существуют, этот оператор возвратил бы ошибку:
list = {'max', 'minimax', 'maximum', 'max'};
x = validatestring('max', list)
x =
maxstrncmp возвращает логический массив, указывающий, какие строки совпадают с заданной строкой:
list = {'max', 'minimax', 'maximum', 'max'};
x = strncmp('max', list, 3)
x =
1 0 1 1Если вы предпочитаете, чтобы MATLAB возвратил числовые индексы list, используйте find можно следующим образом:
list = {'max', 'minimax', 'maximum', 'max'}
x = find(strncmp(list, 'max', 3))
Если ваш вход к strmatch является символьным массивом с несколькими строками, то сначала преобразовывают символьный массив в массив ячеек с помощью cellstr. Затем передайте вывод от cellstr до strncmp или validatestring
regexp | regexpi | regexprep | startsWith | strcmp | strcmpi | strfind | strncmp | strncmpi