拆分由给定对象类型分隔的字符串

时间:2014-04-08 15:50:12

标签: string matlab split delimiter text-processing

如何将字符串拆分为子字符串列表,其中要拆分的分隔符是MATLAB对象类型?

例如:

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

或:

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

3 个答案:

答案 0 :(得分:6)

我不确定MATLAB对象类型的含义。对于整数,您可以使用:

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

输出:

ans = 

    'a'    'b'    'c'

另一种选择是:

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

答案 1 :(得分:2)

您通过传递类型的相应正则表达式来查找regexp()

  • 对于整数:regexp('a1b2c','\d+','split') % or use '[0-9]+'
  • 对于字符:regexp('a1b2c','[a-z]+','split')

答案 2 :(得分:1)

如果您对正则表达式感到满意,我会使用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')