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

use*_*665 10 octave string-matching

我试图在向量中找到一个字符串.对于Eg:查询="ab"in vector = ["ab","cd","abc","cab"]

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

car*_*aug 10

问题在于你的语法.当你这样做时vector = ["ab", "cd", "abc", "cab"],你不是在创建那些多个字符串的向量,而是将它们连接成一个字符串.你应该做的是创建一个字符串的单元格数组:

vector = {"ab", "cd", "abc", "cab"};
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

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

   1   0   0   0
Run Code Online (Sandbox Code Playgroud)

许多其他函数将与字符串的单元格数组一起正常工作,包括strfind在这种情况下为每个单元格提供字符串"ab"星号的索引:

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