9

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

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

我想像这样得到它

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

在matlab中怎么做?我知道我可以使用

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

但是如何使用多个分隔符?

4

3 回答 3

12

找到了。。谢谢回复。。

regexp(cellArr, '[_.]', 'split')
于 2012-10-31T22:23:21.853 回答
0

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

STRTOK 参考

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

要回答您的编辑:

对字符串元胞数组使用 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)添加简单的逻辑来删除文件扩展名。

于 2012-10-31T22:08:44.143 回答
0

使用以下方法也很有用strsplit

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

C = strsplit(cellArr,'_')

那么 C 是一个包含三个向量的元胞数组。还有filepath是否需要删除不必要的部分,例如扩展。strsplit如果需要,也可以与 Regex 一起使用!

于 2018-09-27T07:11:29.213 回答