我有一个名为FileName的单元格。 '一个'和' b'和其他人在那个牢房里。有两种类型的字符串,包括说,喝或果汁。
a = 'xxx_drink.txt';
b = 'xxx_juice.txt';
c = 'drink';
d = 'juice';
我试图使用if语句,如果' c'是' a'的一部分。然后我想存储一个'到一个特定的变量。如果' d'是' b'的一部分。然后我想将它存储到另一个特定变量中。
我如何在MATLAB中解决这个问题?
答案 0 :(得分:3)
您想使用strfind
..
amatched = '';
a = 'xxx_drink.txt';;
c = 'drink';
% Check if 'c' is a part of 'a'
if ~isempty(strfind(a, c))
amatched = a; % Assign to some variable
end
如果找不到匹配项,则 strfind
返回一个空数组,因此isempty
检查。
答案 1 :(得分:1)
contains
函数在另一个函数中找到一个字符串并返回逻辑值。如果string包含指定的模式,则函数返回true
和false
。使用以下:
FileName = {'xxx_drink.txt', 'xxx_juice.txt'};
pattern = 'drink';
idx = contains(FileName, pattern);
idx
向量的第一个元素是true
,第二个元素是false
。要获取包含模式的单元格元素,请使用
DrinkNames = FileName(idx);
或
DrinkNames = FileName(contains(FileName, 'drink'));
你也可以使用字符串,字符串数组或字符向量而不是单元格。
注意,该功能是在Matlab R2016b中引入的。