CH1*_*123 5 string matlab octave string-search
Octave中是否有一个函数返回单元格数组中第一次出现字符串的位置?
我发现findstr但这会返回一个我不想要的矢量.我想要做什么index,但它只适用于字符串.
如果没有这样的功能,有没有关于如何去做的提示?
正如findstr被弃用的那样,find并且strcmpi可能证明是有用的. strcmpi通过忽略可能对您的目的有用的字母大小写来比较字符串.如果这不是您想要的,请使用不带尾随的函数i,所以strcmp.输入strcmpi或是strcmp要搜索的字符串str,对于您的情况,附加输入参数是A要搜索的字符串数组.输出strcmpi或strcmp将给出一个logical值向量,其中每个位置k告诉您k单元格中的字符串数组A匹配str.然后,您将使用find查找字符串匹配位置的所有位置,但您可以通过指定最大位置数n以及约束搜索位置来进一步限制它- 特别是如果您要查看第一个或最后一个n位置字符串匹配.
如果所需的字符串在,str并且您的单元格数组已存储A,只需执行以下操作:
index = find(strcmpi(str, A)), 1, 'first');
Run Code Online (Sandbox Code Playgroud)
重申find一下,将找到字符串匹配的所有位置,而第二个和第三个参数告诉您仅返回结果的第一个索引.具体来说,这将返回所需搜索字符串的第一次出现,如果找不到则返回空数组.
octave:8> A = {'hello', 'hello', 'how', 'how', 'are', 'you'};
octave:9> str = 'hello';
octave:10> index = find(strcmpi(str, A), 1, 'first')
index = 1
octave:11> str = 'goodbye';
octave:12> index = find(strcmpi(str, A), 1, 'first')
index = [](1x0)
Run Code Online (Sandbox Code Playgroud)