检查 MATLAB 中主字符串中可用的一组子字符串中的任何字符串
Check any string from a set of substrings available in main String in MATLAB
我们有一组子字符串 t = (b6,b7,y7,y8)
和一个主字符串 K ='hgtb6ju\u'
。
我需要检查 t
中的任何元素在 K
中是否可用。如果是,哪个子字符串。
您可以使用 strfind
:
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
K = 'hgtb6ju\u';
indexes = find(cellfun(@(x) ~isempty(strfind(K, x)), t));
% indexes == [1, 5] - means: 'b6' and 'ju'
isAny = ~isempty(indexes);
比 strfind 解决方案短一点(如果您可以访问 R2016b):
K = 'hgtb6ju\u';
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
indices = find(cellfun(@(s) contains(K,s),t));
你甚至可以直接调用contains(K,t)
,但它只会return一个逻辑标量,表示t
的元素是否任何在 K
,不告诉你是哪个。这就是上面的 cellfun 调用所做的。
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
K = 'hgtb6ju\u';
logidx = ~cellfun(@isempty,regexp(K,t)); %Finding if substrings are present
matched = t(logidx) % Finding which substrings are present
我们有一组子字符串 t = (b6,b7,y7,y8)
和一个主字符串 K ='hgtb6ju\u'
。
我需要检查 t
中的任何元素在 K
中是否可用。如果是,哪个子字符串。
您可以使用 strfind
:
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
K = 'hgtb6ju\u';
indexes = find(cellfun(@(x) ~isempty(strfind(K, x)), t));
% indexes == [1, 5] - means: 'b6' and 'ju'
isAny = ~isempty(indexes);
比 strfind 解决方案短一点(如果您可以访问 R2016b):
K = 'hgtb6ju\u';
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
indices = find(cellfun(@(s) contains(K,s),t));
你甚至可以直接调用contains(K,t)
,但它只会return一个逻辑标量,表示t
的元素是否任何在 K
,不告诉你是哪个。这就是上面的 cellfun 调用所做的。
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
K = 'hgtb6ju\u';
logidx = ~cellfun(@isempty,regexp(K,t)); %Finding if substrings are present
matched = t(logidx) % Finding which substrings are present