2014-04-08 78 views
2

如何將一個字符串拆分爲一個子字符串列表,其中要拆分的分隔符是一個MATLAB對象類型?拆分給定對象類型分隔的字符串

例如:

>> splitByType('a1b2c3',type=integer) 
['a','b','c'] 

或:

>> splitByType('a1b2c3',type=character) 
['1','2','3'] 
+0

你能舉出更多的例子嗎? – thewaywewalk

+1

我已經添加了一個新的例子,嗯..基本上,如果我想要的子字符串由整數類型的字符分隔,我會得到由整數 –

回答

7

我不知道你所說的MATLAB對象類型的意思。對於整數,你可以使用:

a='a1b2c' 
regexp(a,'[0-9]+','split') 

,輸出:

ans = 

    'a' 'b' 'c' 

另一種方法是:

regexp(a,'\d+','split') 
+1

輝煌分隔的那些子字符串的列表!乾杯 –

3

你通過將相應的正則表達式尋找regexp()的類型:

  • 對於整數:regexp('a1b2c','\d+','split') % or use '[0-9]+'
  • 對於字符:regexp('a1b2c','[a-z]+','split')
2

我會去與regexp回答,如果你是舒服的正則表達式,但你也可以使用strsplit包含字符串的單元陣列可能的分隔符:

strsplit(a,cellstr(num2str((0:9)'))')  % digits 
strsplit(a,cellstr(char([65:90 97:122])')') % word characters 

此外,strsplit有一個正則表達式模式(奇怪的!爲什麼你會使用這種過度regexp):

strsplit(a,'\d+','delim','reg') % one or more digits 
strsplit(a,'\w+','delim','reg') % one or more word characters 

,對等同regexp(a,'\d+','split')regexp(a,'\w+','split')