如何在MATLAB中将此字符串解析为单元格数组?

时间:2018-03-20 21:07:25

标签: string matlab split string-formatting cell-array

我有一个字符串:

sen = '0.31431 0.64431 Using drugs is not cool Speaker2';

我正在尝试编写将生成的代码:

cell = {'0.31431','0.64431', 'Using drugs is not cool', 'Speaker2'};

问题在于我不想使用'Using drugs is not cool'中的单词数量,因为在其他示例中这些单词会有所改变。

我试过了:

output = sscanf(sen,'%s %s %c %Speaker%d');  

但它不能按预期工作。

2 个答案:

答案 0 :(得分:1)

如果你知道你总是要删除前两个单词和最后一个单词,一起收集其他所有单词,那么你可以使用strsplitstrjoin,如下所示:

sen = '0.31431 0.64431 Using drugs is not cool Speaker2';
words = strsplit(sen);  % Split all words up
words = [words(1:2) {strjoin(words(3:end-1), ' ')} words(end)]  % Join words 3 to end-1

words =

  1×4 cell array

    '0.31431'    '0.64431'    'Using drugs is not cool'    'Speaker2'

答案 1 :(得分:1)

你可以使用正则表达式,但它有点难看:

>> str = '0.31431 0.64431 Using drugs is not cool Speaker2';
>> regexp(str,'(\d+\.\d+)\s(\d+\.\d+)\s(.*?)\s(Speaker\d+)','tokens')

ans =

  1×1 cell array

    {1×4 cell}

>> ans{:}

ans =

  1×4 cell array

    {'0.31431'}    {'0.64431'}    {'Using drugs is not cool'}    {'Speaker2'}