【问题标题】:Search a particular string in a vector(Octave)在向量中搜索特定字符串(八度)
【发布时间】:2014-10-29 15:51:51
【问题描述】:

我正在尝试在向量中查找字符串。 例如:query = "ab" in vector = ["ab", "cd", "abc", "cab"]

问题是:当我使用函数 strfind(vector,query) 时,它给出了所有具有字符串“ab”的索引。在这种情况下,“ab”包括“abc”和“cab”。但我只想要“ab”的索引而不是其他索引。 在 Octave 中是否有任何特定的功能?

【问题讨论】:

    标签: octave string-matching


    【解决方案1】:

    问题出在你的语法上。当您执行vector = ["ab", "cd", "abc", "cab"] 时,您并没有创建这些多个字符串的向量,而是将它们连接成一个字符串。您应该做的是创建一个字符串元胞数组:

    vector = {"ab", "cd", "abc", "cab"};
    

    然后你可以这样做:

    octave-cli-3.8.2>  strcmp (vector, "ab")
    ans =
    
       1   0   0   0
    

    许多其他函数可以正确处理字符串元胞数组,包括strfind,在这种情况下,它会为您提供字符串“ab”星标的每个元胞的索引:

    octave-cli-3.8.2> strfind (vector, "ab")
    ans = 
    {
      [1,1] =  1
      [1,2] = [](0x0)
      [1,3] =  1
      [1,4] =  2
    }
    

    【讨论】:

    • 这很好。但是你能告诉我如何在这个单元格中附加一个元素吗?有内置功能吗?
    • 另外,如果有多个匹配项或者您正在搜索多个字符串,请查看ismember 函数。关于附加到矩阵,您可以这样做:vector{end+1} = 'new string'。请查看my answer to this question 了解更多详情。
    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多