在向量(Octave)中搜索特定字符串

14

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

问题是:当我使用strfind(vector,query)函数时,它会返回所有包含字符串"ab"的索引。在这种情况下,它包括"abc"和"cab"。但我只想要"ab"的索引而不是其他的。 Octave中是否有特定的函数可以实现此功能?

1个回答

13
问题出在你的语法上。当你执行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
1
如果有多个匹配项或者你正在搜索多个字符串,请查看ismember函数。关于向矩阵添加内容,您可以这样做:vector{end+1} = 'new string'。请参考我的回答了解更多细节。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接