Matlab 中是否有类似于 Java 中 String.split(delimiter) 函数的功能?

10

是否有(默认)的Matlab函数与java方法split(delimiter)类似,可以根据任意分隔符对字符串进行标记化?


3
值得一提的是,自Matlab 2013a版本起,有一个叫做strsplit的函数可以实现这个功能。 - Dan
3个回答

17

有一个内置函数叫做textscan,可以实现这个功能:

>> C = textscan('I like stack overflow', '%s', 'delimiter', 'o');    
>> C = C{1}

C = 
    'I like stack '
    'verfl'
    'w'

只是说,strtok{} 看起来更好。 - AruniRC
假设字符串 str = 'myfile.txt',我们想要在 . 分隔符上将其分开。因此,(str0,str1) = strtok(str,'.') 将会在第二个参数指定的分隔符上拆分字符串。先前评论中的花括号是一个打字错误,抱歉。 - AruniRC
2
@AruniRC:是的。但是它只能分割一次,例如要实现我答案中所示的分割,您必须递归调用strtok,而textscan解决方案是一行代码(好吧,两行,但无妨 :) - Rody Oldenhuis
啊,我一直错误地假设 strtok 可以用于多个分隔符。那么,有没有什么好的解决方案呢? :) - AruniRC

6

有多种方法可以分割字符串。像Rody Oldenhuis刚才提到的那样,这里还有其他几种方法:

1> 使用函数regexp

>> str = 'Good good study Day day up';
>> regexp(str,'\s','split')
ans = 
    'Good'    'good'    'study'    'Day'    'day'    'up'
>> 

2> 使用函数 strread

>> str = 'Section 4, Page 7, Line 26';
>> strread(str, '%s', 'delimiter', ',')
ans = 
    'Section 4'
    'Page 7'
    'Line 26'
>> 

@robguinness 在我的机器上运行良好。不管怎样,函数 'regexp' 更好。 - Eastsun

2
文件交换中有一个名为xml_toolbox的软件包,其中有一个类似于您所提到的函数。

它被称为strsplit

strsplit('I like stack overflow','o')

答案是:

'I like stack' 'verfl' 'w'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接