发现细胞指数包含我的字符串
4684(30天)
显示旧的评论
你好,我有一个细胞aray (40000 x1)的每一个细胞都包含一个字符串。我想找到包含特定字符串索引的细胞。
我用以下:
指数= strfind (Mycellarray,“Bla”);
我得到以下错误:? ? ?错误使用= = >细胞。strfindat 35 If any of the input arguments are cell arrays, the first must be a cell array of strings and the second must be a character array.
什么是错误的,在帮助文件中strfind接受细胞数组和一个模式……?
谢谢你!
7评论
1月
2017年9月26日
这是
不
一条错误消息。它只是告诉你,没有找到字符串。
你真的在寻找字符串的ggiBoundaries1 (1,1) ?或者你的意思是:
找到(strcmp (rawdata ggiBoundaries1 (1,1)))
搜索出现的第一个字符的变量
ggiBoundaries1
吗?
请不要一个新的问题附加到一个现有的线程。打开一个新的更好。谢谢。
接受的答案
1月
2011年2月25日
编辑:MathWorks支金宝app持团队
2021年3月23日
你想搜索“bla”内细胞的数组,每个元素中的文本或元素“bla”到底是什么?如果你解释这个细节,那么你将更容易回答的问题。
如果你正在寻找文本,bla作为文本的一部分,然后从R2016b可以使用“包含”功能,正如亚历山大Cranney指出。
指数=找到(包含(C,“bla”));
该函数返回一个逻辑数组“包含”。这种类型的逻辑索引可以用来使许多工作流程更有效率。更多使用逻辑阵列,参考文档:
在早期版本的MATLAB (R2016b之前),您可以使用“strfind”功能。然而,“strfind”返回一个单元阵列的索引。任何输入单元格的文本不包含“bla”,“strfind”返回一个空单元。使用“isempty”和“cellfun”与“搜索”功能,找到空细胞。
IndexC = strfind (C,“bla”);
指数=找到(不是(cellfun (“isempty”IndexC)))
如果你正在寻找文本正是bla,然后看到乔斯的答案。
10评论
更多的答案(7)
乔斯(10584)
2011年2月25日
所以,你原来的数组是一个细胞细胞单个字符串的数组。使用比较字符串的索引,找到包含指定字符串的细胞与细胞
C = {{“一个”},{“b”},{“c”},{“一个”},{“一个”}}%的数据
idx =找到(strcmp ([C {}):“一个”))%单行引擎
马特·B
2013年11月14日
现在我意识到这个问题是旧的,但一个简单的方法是定义一个内联函数:
cellfind = @(字符串)(@ (cell_contents)(比较字符串(字符串,cell_contents)));
你可以使用这个cellfun返回一个布尔值为每个元素的细胞。例如:
cell_array ={1,眼(2),真的,“foo”,10};
字符串=“foo”
logical_cells = cellfun (cellfind (“foo”),cell_array)
logical_cells =
(0,0,0,1,0]
3评论
1月
2019年6月6日
@Matt B:
比较字符串
直接接受一个单元阵列,这样你就可以避免复杂
cellfun
与昂贵的匿名函数的方法:
cell_array ={1,眼(2),真的,“foo”,10}
比较字符串(cell_array“foo”)
> > (0,0,0,1,0]