2014-09-04 47 views
7

我正試圖在向量中查找字符串。 For example:query =「ab」in vector = [「ab」,「cd」,「abc」,「cab」]在向量中搜索特定的字符串(Octave)

問題是:當給出所有包含字符串「ab」我使用函數strfind(vector,query)。在這種情況下,「ab」包括「abc」和「cab」。但我只想要「ab」而不是別人的索引。 Octave中有這個特殊功能嗎?

回答

6

問題在於你的語法。當您執行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 
} 
+0

這很好。但是你能告訴我如何在這個單元格中添加一個元素嗎?有沒有內置功能? – user3713665 2014-09-04 20:41:56

+1

另外,如果有多個匹配,或者您正在搜索多個字符串,請查看'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