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)