首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中找到字符串数组中的子串?

如何在matlab中找到字符串数组中的子串?
EN

Stack Overflow用户
提问于 2014-06-30 23:30:49
回答 3查看 3.5K关注 0票数 1

我有一个字符串'ADSL'。我想在字符串数组char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')中查找此字符串

当我运行此命令时

代码语言:javascript
复制
strmatch('ADSL',char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL'));

输出是2,但我希望输出是[1 2]

只有当搜索字符串出现在行的开头时,strmatch才会给出肯定的结果。

如果搜索字符串出现在行中的任何位置,我如何找到它?

EN

回答 3

Stack Overflow用户

发布于 2014-06-30 23:58:13

给定以下输入:

代码语言:javascript
复制
array = {'PSTN,ADSL', 'ADSL,VDSL', 'FTTH,VDSL'};
str = 'ADSL';

我们使用以下命令找到每个字符串匹配的起始位置:

代码语言:javascript
复制
>> pos = strfind(array, str)
pos = 
    [6]    [1]    []

代码语言:javascript
复制
>> pos = regexp(array, str)
pos = 
    [6]    [1]    []

然后,我们可以使用以下命令查找匹配字符串的索引:

代码语言:javascript
复制
>> matches = find(~cellfun(@isempty,pos))
matches =
     1     2
票数 3
EN

Stack Overflow用户

发布于 2014-06-30 23:56:33

对于字符串数组,最好使用单元格数组。这样,字符串可以具有不同的长度(并且regexp可以同时应用于所有单元格):

代码语言:javascript
复制
cellArray = {'PSTN,ADSL','ADSL,VDSL','FTTH,VDSL'};
str = 'ADSL';

然后:

代码语言:javascript
复制
result = find(~cellfun('isempty', regexp(cellArray, str)));

会给你想要的。

如果您真的像示例中那样有一个char数组,

代码语言:javascript
复制
array = char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL');

您可以转换为单元格数组(使用cellstr)并应用上面的内容:

代码语言:javascript
复制
result = find(~cellfun('isempty', regexp(cellstr(array), str)));
票数 1
EN

Stack Overflow用户

发布于 2014-06-30 23:59:04

我会使用strfind

代码语言:javascript
复制
a=strfind(cellstr(char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')),'ADSL');

在本例中,将是一个三乘一的单元格数组,其中包含字符串在相应字符串中的起始位置的索引

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24493741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档