7
我正试图在向量中查找字符串。 For example:query =“ab”in vector = [“ab”,“cd”,“abc”,“cab”]在向量中搜索特定的字符串(Octave)
问题是:当给出所有包含字符串“ab”我使用函数strfind(vector,query)。在这种情况下,“ab”包括“abc”和“cab”。但我只想要“ab”而不是别人的索引。 Octave中有这个特殊功能吗?
我正试图在向量中查找字符串。 For example:query =“ab”in vector = [“ab”,“cd”,“abc”,“cab”]在向量中搜索特定的字符串(Octave)
问题是:当给出所有包含字符串“ab”我使用函数strfind(vector,query)。在这种情况下,“ab”包括“abc”和“cab”。但我只想要“ab”而不是别人的索引。 Octave中有这个特殊功能吗?
问题在于你的语法。当您执行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
}
这很好。但是你能告诉我如何在这个单元格中添加一个元素吗?有没有内置功能? – user3713665 2014-09-04 20:41:56
另外,如果有多个匹配,或者您正在搜索多个字符串,请查看'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