我们有一组子字符串t = (b6,b7,y7,y8)
和一个主字符串K ='hgtb6ju\u'
。检查MATLAB中主要字符串中可用的一组子字符串中的任何字符串
我需要检查K
中是否有t
中的任何元素。如果是的话,哪些子字符串。
我们有一组子字符串t = (b6,b7,y7,y8)
和一个主字符串K ='hgtb6ju\u'
。检查MATLAB中主要字符串中可用的一组子字符串中的任何字符串
我需要检查K
中是否有t
中的任何元素。如果是的话,哪些子字符串。
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
比strfind解决短一点(如果你有机会到R2016b):
K = 'hgtb6ju\u';
t = {'b6', 'b7', 'y7', 'y8', 'ju'};
indices = find(cellfun(@(s) contains(K,s),t));
,你甚至可以直接调用contains(K,t)
,但它仅会返回一个标量逻辑,指示的任何的元素t
是否在K
中,不会告诉你哪个。这就是上面的cellfun调用所做的。
应该提到'contains'是在MATLAB R2016 ** b ** –
中引入的哦,我不知道。谢谢。 – Florian
我只是想用regexp变体更新我的答案:)制作了一些tic-toc,这个更快。 – DVarga
谢谢!如果t = {'b10','b1','b11'},则需要进一步澄清。 K ='hgtb10ju \ u'; 。有什么办法可以将b10与b1区分开来吗? –