我想在单元格内找到一个字符串(我从表中取出)的位置: A是我的桌子,B是牢房。
我测试过:
strncmp(A(1,8),B(:,1),1)
但它无法找到位置。 我测试了许多命令,如: ismember,strmatch,find(strcmp),find(strcmpi)find(ismember),strfind等...但是他们都给我错误,主要是因为我的数据类型!
所以请给我一个解决方案。
答案 0 :(得分:3)
您想要strfind
:
>> strfind('0123abcdefgcde', 'cde')
ans =
7 12
如果A
是一个表而B
是一个单元格数组,则需要以这种方式编制索引:
strfind(B{1}, A.VarName{1});
例如:
>> A = cell2table({'cde'},'VariableNames',{'VarName'}); %// create A as table
>> B = {'0123abcdefgcde'}; %// create B as cell array of strings
>> strfind(B{1}, A.VarName{1})
ans =
7 12
答案 1 :(得分:2)
您的问题是您尝试的所有函数(strfind,...)仅适用于普通字符串,但不适用于单元格数组。在代码段中对A
和B
编制索引的方式仍然是单元格数组(维(1,1))。你需要使用大括号{}
来"摆脱"单元格数组并获取包含字符串。 Luis Mendo展示了如何做到这一点。
答案 2 :(得分:0)
来自Mathworks论坛的修改过的解决方案,适用于带有不规则字符串的单列表
find(strcmp('mystring',mytable{:,:}))
将为您提供行号。