【问题标题】:How to search for a string in cell array in MATLAB by comparing it to another string?如何通过将字符串与另一个字符串进行比较来在 MATLAB 中的元胞数组中搜索字符串?
【发布时间】:2013-03-16 01:38:09
【问题描述】:

我曾尝试使用 strcmp,但我不知道如何查看元胞数组并仅输出具有该字符串的元胞数组。

例如 str='Hello'

out=["Hello", "my", "name", "is" "sam"]
out=["What", "is", "you", "name"]
out=["Hello", "my", "name", "is" "John"]

我的代码如下

while ~feof(fid)
    line=fgetl(fid)
    if isempty(line)||strncmp(line, '%',1)||~ischar(line)
        continue
    end
    fprintf(line)
    out=regexp(line, '', 'split')
end

我想添加 if(str=="Hello"),只打印出那些数组

输出

["Hello", "my", "name", "is" "sam"]
["Hello", "my", "name", "is" "John"]

【问题讨论】:

    标签: string matlab compare


    【解决方案1】:

    类似的东西

    if any(strcmp('Hello', out))
    

    应该很有用。

    【讨论】:

      【解决方案2】:

      使用 ismember() 。比如out = {'Hello', 'my', 'name', 'is', 'sam'};,那么ismember(out, 'Hello')应该是1。你可以查看这个讨论http://www.mathworks.com/matlabcentral/newsreader/view_thread/284849

      顺便说一句,out=["Hello", "my", "name", "is" "sam"] 不是单元格的表示。应该是out = {'Hello', 'my', 'name', 'is', 'sam'}

      【讨论】:

      • 谢谢,这些真的很有帮助,我的代码可以运行了,谢谢。你知道如何忽略数组中的逗号吗?如果字符串中有逗号,当我使用 ismember(out, 'Hello') 时,它不会用逗号打印带有 Hello 的句子,以及如何忽略大写字母
      • @Samira 你可以使用这个函数'isstrprop'来确定字符串是否属于指定的类别来删除逗号等特殊字符。请查看此链接:mathworks.com/help/matlab/ref/isstrprop.html
      • 谢谢@tqjustc,我真的很感激。 :)
      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      相关资源
      最近更新 更多