检查字符串的一部分是否在另一个字符串中

时间:2017-07-10 16:49:57

标签: matlab

我有一个名为FileName的单元格。 '一个'和' b'和其他人在那个牢房里。有两种类型的字符串,包括说,喝或果汁。

a = 'xxx_drink.txt';
b = 'xxx_juice.txt';
c = 'drink';
d = 'juice';

我试图使用if语句,如果' c'是' a'的一部分。然后我想存储一个'到一个特定的变量。如果' d'是' b'的一部分。然后我想将它存储到另一个特定变量中。

我如何在MATLAB中解决这个问题?

2 个答案:

答案 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包含指定的模式,则函数返回truefalse。使用以下:

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中引入的。