Delphi中如何在无序字符串中获取时间子串的起始位置?
比如有字符串:[code=INIFile]ljdflaLKLS 1.22 上了打击法lsdjf2007-12-10 12:12:00 SDJowejSDK
SDLFJlsjfd sldjflkjLSDJ六十九上了打击法打开开发的东京07-12-10六十年代会计
上了多家来的家发SLJDdlk12:00:00ldkjflsd
jf2007-12-10 12:12:00:000sd上了打击法
是打开 是打开 2007/12/10 12:12:00sd [/code]
即字符串是任意的,时间子串出现的位置也是任意的。格式是系统可以识别的任意时间或日期格式,如:
第一行的:2007-12-10 12:12:00
第二行的:07-12-10
第三行的:2007-12-10 12:12:00:000
第四行的:2007/12/10 12:12:00
都可以认为是合法的时间子串,如何找到4个子串的起始位置和结束位置呢?那位高手能实现?最好能提供完整程序!
比如有字符串:[code=INIFile]ljdflaLKLS 1.22 上了打击法lsdjf2007-12-10 12:12:00 SDJowejSDK
SDLFJlsjfd sldjflkjLSDJ六十九上了打击法打开开发的东京07-12-10六十年代会计
上了多家来的家发SLJDdlk12:00:00ldkjflsd
jf2007-12-10 12:12:00:000sd上了打击法
是打开 是打开 2007/12/10 12:12:00sd [/code]
即字符串是任意的,时间子串出现的位置也是任意的。格式是系统可以识别的任意时间或日期格式,如:
第一行的:2007-12-10 12:12:00
第二行的:07-12-10
第三行的:2007-12-10 12:12:00:000
第四行的:2007/12/10 12:12:00
都可以认为是合法的时间子串,如何找到4个子串的起始位置和结束位置呢?那位高手能实现?最好能提供完整程序!
解决方案 »
- 请教,如何检测activeX网页控件的内存泄漏问题!!
- 求教:DBGridEh的问题。。在线等。。
- 急,哪位知道在Delphi里,一个panel上加了一个Memo控件,要求选中Memo后,怎么样实现边框效果?
- 提一个 Visibroker 在 p4 机下用不了的问题, 不知大家有没用到
- 谁有将excel报表输出打印的范例啊?(解决后100大洋立即献上)
- 为什么我这段用WINHELP调用帮助文件的程序不能通过编译。高手帮忙看看啊。
- 初学数据库的几个问题:
- 关于窗体——怎么解决组件的自动调整大小?
- 用ADO写好的程序,拷到其它机上用,要装什么?
- 我不知?ReportBuilder5.5安装的密码 and 1stClass 2000 Pro 安装的密码?
- 求助有关 Tlistview 控件 100分相送
- 怎么编译程序?
小于10000年的都是正确的。
var
s,s1:string;
i:integer;
begin
result:='';
for i:=1 to length(sr) do
begin
s:=copy(sr,i,4);
if (StrToIntDef(s,0)>1900) then
begin
s1:=checkdate(sr,i); //这是个函数,自己写吧
if s1>' ' then
result:=result+#13#10+s1;
////
inc(i,8); //这一句可能通不过,先去掉,以后再改用 while
end;
end;
end;
地址:http://www.vdisk.cn/www/
用户名:jackens
密码:888888
uses RegExpr;
.....
procedure TForm1.Button1Click(Sender: TObject);
var
regEx: TRegExpr;
matchstr:String;
begin
Memo2.Text:='';
regEx:=TRegExpr.Create;
regEx.Expression:='([\d]{4}\-[\d]{2}\-[\d]{2} [\d]{2}\:[\d]{2}\:[\d]{2})|([\d]{4}\/[\d]{2}\/[\d]{2} [\d]{2}\:[\d]{2}\:[\d]{2})|([\d]{4}\-[\d]{2}\-[\d]{2})|([\d]{4}\/[\d]{2}\/[\d]{2})|([\d]{2}\:[\d]{2}\:[\d]{2})';
if regEx.Exec(Memo1.Text) then
repeat
matchstr:=regEx.Match[0];
Memo2.Lines.Add(regEx.Match[0]);
until not regEx.ExecNext;
end;