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

Arrays 如何在matlab中找到字符串数组中的子字符串?,arrays,string,matlab,find,Arrays,String,Matlab,Find,我有一个字符串“ADSL”。我想在字符串数组char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')中找到这个字符串 当我运行这个命令时 strmatch('ADSL',char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')); 输出为2 但我希望输出为[12] 仅当搜索字符串出现在行的开头时,strmatch才会给出正结果 如果搜索字符串出现在行中的任何位置,如何查找该字符串?对于字符串数组,最好使用单元格数组。这样,字符串的长度可以不同

我有一个字符串“ADSL”。我想在字符串数组
char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')中找到这个字符串

当我运行这个命令时

strmatch('ADSL',char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL'));
输出为
2
但我希望输出为
[12]

仅当搜索字符串出现在行的开头时,strmatch才会给出正结果


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

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

然后:

我会给你想要的

如果您的示例中确实有一个char数组

array = char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL');
您可以转换为单元格数组(使用
cellstr
)并应用上述内容:

result = find(~cellfun('isempty', regexp(cellstr(array), str)));

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

然后:

我会给你想要的

如果您的示例中确实有一个char数组

array = char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL');
您可以转换为单元格数组(使用
cellstr
)并应用上述内容:

result = find(~cellfun('isempty', regexp(cellstr(array), str)));

考虑到以下输入:

array = {'PSTN,ADSL', 'ADSL,VDSL', 'FTTH,VDSL'};
str = 'ADSL';
我们使用以下方法查找每个字符串匹配的起始位置:

>> pos = strfind(array, str)
pos = 
    [6]    [1]    []

然后,我们可以使用以下方法找到匹配字符串的索引:

>> matches = find(~cellfun(@isempty,pos))
matches =
     1     2

考虑到以下输入:

array = {'PSTN,ADSL', 'ADSL,VDSL', 'FTTH,VDSL'};
str = 'ADSL';
我们使用以下方法查找每个字符串匹配的起始位置:

>> pos = strfind(array, str)
pos = 
    [6]    [1]    []

然后,我们可以使用以下方法找到匹配字符串的索引:

>> matches = find(~cellfun(@isempty,pos))
matches =
     1     2
我会用strfind

a=strfind(cellstr(char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')),'ADSL');
在本例中,将是一个三乘一单元格数组,其中包含字符串在相应字符串中开始的索引

a=strfind(cellstr(char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL')),'ADSL');

在这种情况下,将是一个三乘一单元格数组,其中包含字符串在相应字符串中开始的索引

如果您有一个字符串单元格数组,请按如下方式使用cellfun尝试strfind:cell2mat(cellfun(@(x)strfind(x,'ADSL'),a,'UniformOutput',false)),如果您有一个字符串单元格数组,使用cellfun尝试strfind如下:cell2mat(cellfun(@(x)strfind(x,'ADSL'),a,'UniformOutput',false))可以使用
cellstr简化从字符矩阵到字符串单元格数组的转换
cellstr可以简化从字符矩阵到字符串单元格数组的转换
cellstr
cellfun('isempty',…)
可能比
cellfun(@isempty,…)快。
是的,我想是的,尽管差别越来越小:(也看评论)
cellfun(@isempty,…)
可能比
cellfun(@isempty,…)快。
是的,尽管差别越来越小:(也看评论)