从其他地方读取代码,我有一个名为"time"的日期矩阵,其中包含我想要删除的不需要的空格。
我尝试过isspace和regexprep,但没有运气
time = regexprep(time, 'W', '');
我有大约 130000 个日期,格式如下:
04-July -2017 09:54:30.000
04-July -2017 09:54:31.000
等 在"七月"结束到我要抑制的下一个破折号之间有两个空格:
04-July-2017 09:54:30.000
04-July-2017 09:54:31.000
将两个或多个空格替换为任何内容:
>> time = {'04-July -2017 09:54:30.000'
'04-July -2017 09:54:31.000'}
>> regexprep(time,' {2,}','')
{'04-July-2017 09:54:30.000'}
{'04-July-2017 09:54:31.000'}
除非您只想更正输入文件以供以后使用,否则您不一定需要更正输入。有几种方法可以直接使用额外的空格解析时间:
让我们time
:
time = ['04-July -2017 09:54:31.000';
'04-July -2017 09:54:32.000']
然后,要将日期时间的字符串表示形式直接解析为 MATLAB 日期序列号,您可以使用:
%% get date in [MATLAB date serial number]
formatIn = 'dd-mmm -yyyy HH:MM:SS.FFF' ;
matlabTime = datenum(time,formatIn)
matlabTime =
736880.412858796
736880.41287037
这种串行时间表示不是那么人类可读,但如果你想用日期/时间进行计算,它是你能得到的最快的东西。
如果您的目标只是更正字符串,那么您可以使用相同的技巧来读取值,并准确定义您想要输出的输出格式:
%% get date in [string]
formatIn = 'dd-mmm -yyyy HH:MM:SS.FFF' ;
formatOut = 'dd-mmm-yyyy HH:MM:SS.FFF' ;
stringTime = datestr(datenum(time,formatIn),formatOut)
stringTime =
04-Jul-2017 09:54:31.000
04-Jul-2017 09:54:32.000
如果要使用新的datetime
对象,输入格式的语法略有不同,但操作大致相同:
%% get date in [datetime] objects
formatIn = 'dd-MMM -yyyy HH:mm:ss.SSS' ;
t = datetime(time,'InputFormat',formatIn)
t =
04-Jul-2017 09:54:31
04-Jul-2017 09:54:32
尽管 MATLAB 控制台以人类可读的格式显示t
,但t
现在是一个日期时间对象。如果要使用它,请查看文档。
一个月后和破折号前面只替换两个空格 (-
(:
>> date = '04-July -2017 09:54:30.000';
>> regexprep(date, '(w) -', '$1-')
ans =
'04-July-2017 09:54:30.000'