繁体   English   中英

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

[英]How to find a substring in an array of strings in matlab?

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

当我运行此命令

strmatch('ADSL',char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL'));

输出为2但我希望输出为[1 2]

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

如果搜索字符串出现在行中的任何地方,如何查找?

给出以下输入:

array = {'PSTN,ADSL', 'ADSL,VDSL', 'FTTH,VDSL'};
str = 'ADSL';

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

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

要么

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

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

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

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

cellArray = {'PSTN,ADSL','ADSL,VDSL','FTTH,VDSL'};
str = 'ADSL';

然后:

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

会给你想要的。

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

array = char('PSTN,ADSL','ADSL,VDSL','FTTH,VDSL');

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

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

我会用strfind

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM