2010-04-12 116 views
6

在字符串數組單元格中使用帶有標記的正則表達式我有單元格的單元數組。下面是簡單的例子:將單元格數組轉換爲MATLAB中的字符串單元陣列

S = {'string 1';'string 2';'string 3'}; 
res = regexp(S,'(\d)','tokens') 
res = 

    {1x1 cell} 
    {1x1 cell} 
    {1x1 cell} 
res{2}{1} 
ans = 
    '2' 

我知道我必須在每S.單元串只有一個匹配,我怎麼可以這個輸出轉換成字符串單元陣列的量化形式?

回答

12

問題比你想象的還要糟糕。你的REGEXP的輸出實際上是單元陣列的單元陣列的單元陣列!是的,三個層次!以下用途CELLFUN擺脫前兩個層次,只留下字符串單元陣列:

cellArrayOfStrings = cellfun(@(c) c{1},res); 

但是,你也可以改變您的來電REGEXP擺脫一個水平,然後用VERTCAT

res = regexp(S,'(\d)','tokens','once'); %# Added the 'once' option 
cellArrayOfStrings = vertcat(res{:}); 
+0

這麼容易。 :) 非常感謝! – yuk 2010-04-12 19:34:05

+0

@gnovice:你說得對。我認爲第二種解決方案對速度和清晰度更好。再次感謝。 – yuk 2010-04-13 01:03:41

+1

@gnovice:我不知道我多久閱讀一次regexp的文檔 - 但我沒有注意到'once'選項。謝謝! – Jonas 2010-04-13 14:57:52

相關問題