我一直在尝试将格式为SIM1_T-1-0.000010.cas.gz
的文件名重新格式化为各个部分:SIM1_T-1-
,0.000010
和.cas.gz
但是我还没有取得多大成功,有什么建议吗?
我一直在尝试的几行:
for i = 1:length(casFiles)
casNames(i,:) = sscanf(casFiles{i,1}, '%s');
end
答案 0 :(得分:3)
我假设您有一个字符串(您没有指定您拥有的数组类型;无论如何您总是可以循环遍历所有字符串),并且拆分模式是将第二部分定义为“某些数字” - 小数点 - 圆顶数字“。
str = 'SIM1_T-1-0.000010.cas.gz'; %// string to be split
pattern = '\d+\.\d+'; %// pattern for central (second) part
part13 = regexp(str, pattern, 'split');
part2 = regexp(str, '\d+\.\d+', 'match');
part1 = part13{1};
part2 = part2{1} ;
part3 = part13{2};
结果:
>> part1
part1 =
SIM1_T-1-
>> part2
part2 =
0.000010
>> part3
part3 =
.cas.gz
答案 1 :(得分:1)
您可以使用regexp处理此问题:
>> tokens = regexp('SIM1_T-1-0.000010.cas.gz', '(.*-[^-]*-)([0-9]\.[0-9]*)(.*)', 'tokens', 'once')
tokens =
'SIM1_T-1-' '0.000010' '.cas.gz'
根据我的经验,sscanf
功能不适用于混合数字和字母数字数据。