2015-11-18 68 views
0

輸入: str ='str1Name_str1Value_var1Name_var1Value_var2Name_var2Value';Matlab:如何從字符串中讀取不同類型的數據(字符串和整數)

慾望輸出: 輸出= {'str1Value',[var1Value],[var2Value]};

當需要從字符串中只提取整數時,我使用了sscanf函數,它完美地工作。當我想從同一個輸入字符串中提取一些字符串和整數時出現問題。輸入字符串有一些已知的模式(即str1Name,var1Name等)。 ?

我試圖用正則表達式,textscan功能,但沒有成功:(

任何想法如何做到這一點,我會非常感激

編輯: 輸入字符串的其他例子: 海峽= 'PCNAME_MYPC_OS_UNIX_RAM_4096_NUMCPU_8';

願望輸出: 輸出= { 'MYPC', 'UNIX',[4096],[8]};

我也將成立時第輸出將只包含字符串,那麼它看起來如下: output = {'MYPC','UNIX','4096','8'}; - > str2num應該完成剩餘的工作

+1

可以提供更完整的/典型的輸入? –

+1

'textscan'和'sscanf'應該足以實現這一點。請使用具有代表性的數據字符串以及您已經嘗試過的方式更新您的問題。 – excaza

+0

@ Benoit_11我通過添加更多信息編輯了我的出處帖子 – kieicam

回答

2

由於輸出似乎是通過將輸入中的每個其他元素用下劃線分開來生成的,我們使用strsplit來拆分該字符串並提取每個組件,然後通過索引來訪問它們和形成輸出:

Input = 'PCNAME_MYPC_OS_UNIX_RAM_4096_NUMCPU_8'; 

A = strsplit(Input,'_') 

A現在是一個單元陣列看起來像這樣:

A = 

    Columns 1 through 5 

    'PCNAME' 'MYPC' 'OS' 'UNIX' 'RAM' 

    Columns 6 through 8 

    '4096' 'NUMCPU' '8' 

所以取所有其他元素,以形成輸出:

Output = A(2:2:end) 

其中給出:

Output = 

    'MYPC' 'UNIX' '4096' '8' 
相關問題