我有一个像这样的字符串列表:
cellArr =
'folderName_fileName_no.jpg',
'folderName2_fileName2_no2.jpg'
我希望得到这样的
{folderName, fileName, no},
{folderName2, fileName2, no2}
如何在matlab中完成? 我知道我可以使用
regexp(cellArr, '_', 'split'),
但我怎样才能使用多个分隔符?
答案 0 :(得分:11)
我找到了..感谢回复..
regexp(cellArr, '[_.]', 'split')
答案 1 :(得分:0)
它与字符串标记化的C方法非常相似。使用strtok
,您可以根据您选择的分隔符进行标记(在您的情况下为'_')
注意,您将使用在其剩余字符串的循环中重复调用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是包含三个向量的单元格数组。如果需要删除不必要的部分(例如扩展名),则还有filepath
。 strsplit
也可以与正则表达式一起使用!