【发布时间】:2014-10-29 15:51:51
【问题描述】:
我正在尝试在向量中查找字符串。 例如:query = "ab" in vector = ["ab", "cd", "abc", "cab"]
问题是:当我使用函数 strfind(vector,query) 时,它给出了所有具有字符串“ab”的索引。在这种情况下,“ab”包括“abc”和“cab”。但我只想要“ab”的索引而不是其他索引。 在 Octave 中是否有任何特定的功能?
【问题讨论】:
我正在尝试在向量中查找字符串。 例如:query = "ab" in vector = ["ab", "cd", "abc", "cab"]
问题是:当我使用函数 strfind(vector,query) 时,它给出了所有具有字符串“ab”的索引。在这种情况下,“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
}
【讨论】:
ismember 函数。关于附加到矩阵,您可以这样做:vector{end+1} = 'new string'。请查看my answer to this question 了解更多详情。