Octave - return 字符串在元胞数组中第一次出现的位置
Octave - return the position of the first occurrence of a string in a cell array
Octave 中是否有函数 returns 字符串在元胞数组中第一次出现的位置?
我找到了 findstr
但这个 returns 是一个矢量,我不想要它。我想要 index
的功能,但它只适用于字符串。
如果没有这个功能,请问有什么技巧吗?
如findstr
is being deprecated, a combination of find
and strcmpi
may prove useful. strcmpi
compares strings by ignoring the case of the letters which may be useful for your purposes. If this is not what you want, use the function without the trailing i
, so strcmp
。 strcmpi
或 strcmp
的输入是要搜索 str
的字符串,对于您的情况,附加输入参数是要搜索的字符串的元胞数组 A
。输出strcmpi
或 strcmp
将为您提供一个 logical
值的向量,其中每个位置 k
告诉您元胞数组 [=21= 中的字符串 k
] 与 str
匹配。然后,您将使用 find
查找字符串匹配的所有位置,但您可以通过指定最大位置数 n
以及限制搜索的位置来进一步限制它 - 特别是如果您想要查看字符串匹配的第一个或最后一个 n
位置。
如果所需的字符串在 str
中并且您的元胞数组存储在 A
中,只需执行以下操作:
index = find(strcmpi(str, A)), 1, 'first');
重申一下,find
将查找字符串匹配的所有位置,而第二个和第三个参数告诉您仅 return 结果的第一个索引。具体来说,这将 return 第一次出现所需的搜索字符串,如果找不到则为空数组。
例子运行
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)
Octave 中是否有函数 returns 字符串在元胞数组中第一次出现的位置?
我找到了 findstr
但这个 returns 是一个矢量,我不想要它。我想要 index
的功能,但它只适用于字符串。
如果没有这个功能,请问有什么技巧吗?
如findstr
is being deprecated, a combination of find
and strcmpi
may prove useful. strcmpi
compares strings by ignoring the case of the letters which may be useful for your purposes. If this is not what you want, use the function without the trailing i
, so strcmp
。 strcmpi
或 strcmp
的输入是要搜索 str
的字符串,对于您的情况,附加输入参数是要搜索的字符串的元胞数组 A
。输出strcmpi
或 strcmp
将为您提供一个 logical
值的向量,其中每个位置 k
告诉您元胞数组 [=21= 中的字符串 k
] 与 str
匹配。然后,您将使用 find
查找字符串匹配的所有位置,但您可以通过指定最大位置数 n
以及限制搜索的位置来进一步限制它 - 特别是如果您想要查看字符串匹配的第一个或最后一个 n
位置。
如果所需的字符串在 str
中并且您的元胞数组存储在 A
中,只需执行以下操作:
index = find(strcmpi(str, A)), 1, 'first');
重申一下,find
将查找字符串匹配的所有位置,而第二个和第三个参数告诉您仅 return 结果的第一个索引。具体来说,这将 return 第一次出现所需的搜索字符串,如果找不到则为空数组。
例子运行
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)