使用matlab使用sscanf拆分字符串

时间:2014-08-01 11:50:25

标签: string matlab scanf

我一直在尝试将格式为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

2 个答案:

答案 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功能不适用于混合数字和字母数字数据。