2014-09-04 77 views
7

我正试图在向量中查找字符串。 For example:query =“ab”in vector = [“ab”,“cd”,“abc”,“cab”]在向量中搜索特定的字符串(Octave)

问题是:当给出所有包含字符串“ab”我使用函数strfind(vector,query)。在这种情况下,“ab”包括“abc”和“cab”。但我只想要“ab”而不是别人的索引。 Octave中有这个特殊功能吗?

回答

6

问题在于你的语法。当您执行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 
} 
+0

这很好。但是你能告诉我如何在这个单元格中添加一个元素吗?有没有内置功能? – user3713665 2014-09-04 20:41:56

+1

另外,如果有多个匹配,或者您正在搜索多个字符串,请查看'ismember'函数。关于附加矩阵,你可以这样做:vector {end + 1} ='new string'。看看[我对这个问题的回答](http://stackoverflow.com/questions/25620636/how-to-use-cell-arrays-in-matlab/25621199#25621199)了解更多详情。 – Dan 2014-09-05 07:59:12