如何在 MATLAB 元胞数组中搜索字符串?
假设我有元胞数组,
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
如果我想查找 'KU'
的索引,该怎么办?
Let's say I have the cell array
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
What should I do if I want to find the index of 'KU'
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
strcmp 和 strcmpi 函数是执行此操作的最直接方法。他们通过数组进行搜索。
The strcmp and strcmpi functions are the most direct way to do this. They search through arrays.
您是否尝试
查看 链接
或者,
如果我不这样做也应该可以错误。
did you try
see link
alternatively,
should also work if I'm not mistaken.
我想下面的代码可以做到这一点:
这返回
I guess the following code could do the trick:
This returns
已用时间为 0.001976 秒。
已用时间为 0.000014 秒。
所以,显然
strcmp('KU', strs)
比ismember(strs,'KU')
花费的时间少得多Elapsed time is 0.001976 seconds.
Elapsed time is 0.000014 seconds.
SO, clearly
strcmp('KU', strs)
takes much lesser time thanismember(strs,'KU')
从2011a开始,推荐的方式是:
如果你想获取整数索引(你通常不需要),你可以使用:
strfind
已被弃用,所以尽量不要使用它。Since 2011a, the recommended way is:
If you want to get the integer index (which you often don't need), you can use:
strfind
is deprecated, so try not to use it.我发现每个人都错过了代码中最重要的缺陷:
应该是:
或者
现在如果您坚持使用
您将拥有 无忧无虑:)。
I see that everybody missed the most important flaw in your code:
should be:
or
Now if you stick to using
You'll have no worries :).
对于这种情况,其他答案可能更简单,但为了完整性,我想我会添加使用 cellfun 和匿名函数
,其优点是您可以轻松地使其不区分大小写,或者在具有结构单元数组的情况下使用它:
Other answers are probably simpler for this case, but for completeness I thought I would add the use of cellfun with an anonymous function
which has the advantage that you can easily make it case insensitive or use it in cases where you have cell array of structures:
最短的代码:
但它仅返回
strs
中的第一个位置。如果未找到元素,则ind=0
。Most shortest code:
But it returns only first position in
strs
. If element not found thenind=0
.