Matlab拆分字符串多个分隔符

时间:2012-10-31 22:06:28

标签: regex string matlab split tokenize

我有一个像这样的字符串列表:

cellArr = 
      'folderName_fileName_no.jpg',
      'folderName2_fileName2_no2.jpg'

我希望得到这样的

{folderName, fileName, no},
{folderName2, fileName2, no2}

如何在matlab中完成? 我知道我可以使用

regexp(cellArr, '_', 'split'), 

但我怎样才能使用多个分隔符?

3 个答案:

答案 0 :(得分:11)

我找到了..感谢回复..

regexp(cellArr, '[_.]', 'split')

答案 1 :(得分:0)

它与字符串标记化的C方法非常相似。使用strtok,您可以根据您选择的分隔符进行标记(在您的情况下为'_')

STRTOK reference

注意,您将使用在其剩余字符串的循环中重复调用strtok的C语言,因为它每次只返回第一个标记。参考文献中给出了一个例子。

回答你的编辑:

  

在字符串的单元格数组上使用strtok会返回令牌中字符串的单元格数组,并保留字符数组:

s = {'all in good time'; ...
 'my dog has fleas'; ...
 'leave no stone unturned'};

remain = s;

for k = 1:4
   [token, remain] = strtok(remain);
   token
end

直接来自参考文献中的例3。 <为了明确这一点,您只需将strtok(remain)替换为strtok(remain,REQUIRED_DELIMITERS)并添加简单的逻辑以删除文件扩展名。

答案 2 :(得分:0)

使用strsplit也很有用:

cellArr = 
      'folderName_fileName_no.jpg',
      'folderName2_fileName2_no2.jpg'

C = strsplit(cellArr,'_')

则C是包含三个向量的单元格数组。如果需要删除不必要的部分(例如扩展名),则还有filepathstrsplit也可以与正则表达式一起使用!