我在 Delphi7 中遇到问题。我的应用程序根据一组命名约定创建 mpg 视频文件,即
\000_A_Title_YYYY-MM-DD_HH-mm-ss_Index.mpg
在此文件名中强制执行以下规则:
000
是视频序列。每当用户按下停止键时,它就会递增。
A
(或 B、C、D)指定录制摄像机 - 因此视频文件与最多四个同时播放的视频流链接。
Title
是一个可变长度字符串。在我的应用程序中,它不能包含 _
。
YYYY-MM-DD_HH-mm-ss
是视频序列(不是单个文件)的开始时间
索引
是从零开始的排序索引,并且在1个视频序列内递增。也就是说,视频文件的最长长度为 15 分钟,一旦达到此长度,就会以相同的序列号但下一个索引开始新的视频文件。利用这个,我们可以计算出文件的实际开始时间(文件名解码时间+ 15*Index)
使用此方法,我的应用程序可以提取视频文件开始录制的开始时间。
现在我们有进一步的要求来处理任意命名的视频文件。我唯一确定的是文件名中的某处会有 YYYY-MM-DD HH-mm-ss。
我如何允许用户指定他正在导入的文件的文件名约定?像正则表达式之类的东西?我知道命名方案必须有一个模式。
因此,如果用户在文本框中输入 ?_(Camera)_*_YYYY-MM-DD_HH-mm-ss_(Index).mpg
到文本框中,我将如何获取开始时间?有更好的解决方案吗?或者我只需要处理我们遇到的每一种可能性?
(我知道这可能不是处理此类问题的最佳方法,但我们无法改变问题 - 新的视频文件是由另一家公司录制的)
最佳答案
我不确定您是否尝试将用户输入解析为组件 '?(Camera)*_YYYY-MM-DD_HH-mm-ss_(Index).mpg` 但如果您只是尝试获取像这样的日期和时间,日期在组 1 中,时间在组 2 中
(\d{4}-\d{2}-\d{2})_(d{2}-\d{2}-\d{2})
否则,不确定您想做什么。
关于regex - Delphi - 用户指定的字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224807/