动态正则表达式的妙用

今天一个朋友想要实现将一个文本文件中的时间向前推8个小时,以下是文本的格式,将其中的"20121105 10"替换为“20121105 02”

看起来似乎比较简单,但是问题是,如果遇到小时8小时的,就得向前推一天,如果遇到一个月的第一天,就得向前推一个月,并且

判断那个月有多少天,因此需要很多的分支语句来完成。

借助Matlab强大的时间操作函数datenum,将时间转换成天,然后减去1/3天,再用datestr函数格式化输出,但是这一切有了动态

的正则表达式,就如虎添翼了


以下是我的实现过程

fprintf(fopen('test2.txt','w'),'%s',...
    regexprep(fileread('A.TXT'),'(\d{8}\s\d{2})',...
    '${datestr(datenum($1,''yyyymmdd HH'')-1/3,''yyyymmdd HH'')}'));

你可能感兴趣的:(Matlab)