MATLAB文件名分离
在文件名中,如“10_m1_m2_const_m1_waves_20_90_m2_90_20_20200312_213048”,我需要分开 “10μm1μm2μconstμm1μwavesμ20μ90μm2μwavesμ90μ20”来自“20200312μ213048” 不起作用,因为许多uu是可变的 所以我需要移动一个文件:MATLAB文件名分离,matlab,split,Matlab,Split,在文件名中,如“10_m1_m2_const_m1_waves_20_90_m2_90_20_20200312_213048”,我需要分开 “10μm1μm2μconstμm1μwavesμ20μ90μm2μwavesμ90μ20”来自“20200312μ213048” 不起作用,因为许多uu是可变的 所以我需要移动一个文件: movefile([confpath,name(without 20200312_213048),'.config'],[name(without 20200312_21
movefile([confpath,name(without 20200312_213048),'.config'],[name(without 20200312_213048), filesep, name, '.config']);
你知道吗?谢谢大家! 您可以使用strfind。如果要拆分名称的点之前或之后始终存在密钥,请执行以下操作:
nm = '10_m1_m2_const_m1_waves_20_90_m2_waves_90_20_20200312_213048';
key = 'waves_90_20_';
idx = strfind(nm,key) + length(key);
nm(idx:end)
或者,如果您知道您想要的部分中可能有哪些内容:
idx = strfind(nm,'_');
nm(idx(end-2)+1:end)
在这两种情况下,结果都是:
‘20_20200312_213048’
您可以使用strfind。如果要拆分名称的点之前或之后始终存在密钥,请执行以下操作:
nm = '10_m1_m2_const_m1_waves_20_90_m2_waves_90_20_20200312_213048';
key = 'waves_90_20_';
idx = strfind(nm,key) + length(key);
nm(idx:end)
或者,如果您知道您想要的部分中可能有哪些内容:
idx = strfind(nm,'_');
nm(idx(end-2)+1:end)
在这两种情况下,结果都是:
‘20_20200312_213048’
也许您可以尝试使用regexp找到分离的起始位置:
以致
name1 = 10_m1_m2_const_m1_waves_20_90_m2_waves_90_20
name2 = 20200312_213048
或下面带有选项标记的代码:
给
name_sep =
{
[1,1] = 10_m1_m2_const_m1_waves_20_90_m2_waves_90_20
[1,2] = 20200312_213048
}
也许您可以尝试使用regexp找到分离的起始位置:
以致
name1 = 10_m1_m2_const_m1_waves_20_90_m2_waves_90_20
name2 = 20200312_213048
或下面带有选项标记的代码:
给
name_sep =
{
[1,1] = 10_m1_m2_const_m1_waves_20_90_m2_waves_90_20
[1,2] = 20200312_213048
}
只要时间戳始终位于字符串末尾,您就可以使用并从字符串末尾向后计数:
name = '10_m1_m2_const_m1_waves_20_90_m2_waves_90_20_20200312_213048';
udscr = strfind(name,'_');
name_date = name(udscr(end-1)+1:end)
name_meta = name(1:udscr(end-1)-1)
name_date =
'20200312_213048'
name_meta =
'10_m1_m2_const_m1_waves_20_90_m2_waves_90_20'
只要时间戳始终位于字符串末尾,您就可以使用并从字符串末尾向后计数:
name = '10_m1_m2_const_m1_waves_20_90_m2_waves_90_20_20200312_213048';
udscr = strfind(name,'_');
name_date = name(udscr(end-1)+1:end)
name_meta = name(1:udscr(end-1)-1)
name_date =
'20200312_213048'
name_meta =
'10_m1_m2_const_m1_waves_20_90_m2_waves_90_20'
如何确定正确的切割位置?总是12号吗?尾巴总是这个图案吗?我相信正则表达式会起作用,但首先我们必须了解模式。找到倒数第二个下划线如何?这样行吗?你如何定义切割的位置?@Daniel不,这是问题所在。有时它会像‘1_m1_waves_20_90_20200311_203018’那样调用,因此variable@Chris但是怎么做呢?零件20200312_213048的格式始终相同:YYYYMMDD_HHMMSS如何定义切割位置?-这是结尾前的第二条下划线如何确定正确的剪切位置?总是12号吗?尾巴总是这个图案吗?我相信正则表达式会起作用,但首先我们必须了解模式。找到倒数第二个下划线如何?这样行吗?你如何定义切割的位置?@Daniel不,这是问题所在。有时它会像‘1_m1_waves_20_90_20200311_203018’那样调用,因此variable@Chris但是怎么做呢?零件20200312_213048的格式始终相同:YYYYMMDD_HHMMSS如何定义切割位置?-这是前面的第二条下划线end@Fracture不客气!如果您认为我的答案有帮助,请随时投票/接受,谢谢@不客气!如果您认为我的答案有帮助,请随时投票/接受,谢谢!非常感谢。我可以用第二部分=谢谢!我可以用第二部分=