String 如何在matlab中找到同一行中的两个不同字符串
我有一个从文本扫描中获得的单元格,我想找到包含特定字符串的行的索引String 如何在matlab中找到同一行中的两个不同字符串,string,matlab,find,String,Matlab,Find,我有一个从文本扫描中获得的单元格,我想找到包含特定字符串的行的索引 fid = fopen('data.txt'); E = textscan(fid, '%s', 'Delimiter', '\n'); 我想知道那些有特定文本的行的行号(索引),例如,我想找到包含关键字“2016”的行: 但我想找到那些有两个关键字“2016”和“Mathew Perry”的行的索引(仅那些同时有两个关键字的行) 我尝试使用此代码,但不起作用 rows = find(contains(E{1},"2016"
fid = fopen('data.txt');
E = textscan(fid, '%s', 'Delimiter', '\n');
我想知道那些有特定文本的行的行号(索引),例如,我想找到包含关键字“2016”的行:
但我想找到那些有两个关键字“2016”和“Mathew Perry”的行的索引(仅那些同时有两个关键字的行)
我尝试使用此代码,但不起作用
rows = find(contains(E{1},"2016" && contains(E{1},"Mathew Perry");
我得到的错误是:
| |和&&运算符的操作数必须可转换为逻辑标量值
要查找单个字符串,请执行以下操作:
idx = strfind(E{1}, '2016');
idx = find(not(cellfun('isempty', idx)));
使用strfind而不是find。您可以使用和/或尝试上述方法。如果它工作正常,那么就没有问题;如果不是,则分别获取每个单词的索引,并获取索引的交点 将
|
替换为|
,将&&
替换为&
您的代码中存在一些错误,我假设这些错误只是问题输入错误,而不是实际代码中的错误-缺少所有包含的函数的右括号!有关EBH所说的内容以及&
和&
之间的区别的更多信息,请参阅OP的问题在于&
错误,不要认为您已经解决了。如果它不起作用,单个字符串的索引可以通过集合的交集来使用。contains对于16b是新的,在这种情况下应该是首选。对于大型字符串数组,contains比strfind快得多。
idx = strfind(E{1}, '2016');
idx = find(not(cellfun('isempty', idx)));