找回密码
 加入
搜索
查看: 3622|回复: 3

[效率算法] 【已解决】筛选问题

[复制链接]
发表于 2010-8-5 22:21:43 | 显示全部楼层 |阅读模式
本帖最后由 haodd 于 2010-8-5 22:59 编辑

文本文件 xx.txt
为如下内容
2010-08-04 12:58:31 :AVcc12
2010-08-04 12:58:34 :AVcc13
2010-08-04 13:03:30 :AVcc14
2010-08-04 13:13:43 :AVcc15
2010-08-04 13:34:52 :AVcc16
2010-08-04 13:41:25 :AVcc17
2010-08-04 13:54:44 :AAcc1
2010-08-04 14:08:19 :AAcc9
2010-08-04 14:09:01 :AAcc1
2010-08-04 14:15:27 :AVcc7
2010-08-04 14:16:38 :AVcc6
2010-08-04 14:21:39 :AVcc13
2010-08-04 14:22:24 :AVcc14
2010-08-03 12:44:16 :AVcc15
2010-08-04 14:31:59 :AVcc16
2010-08-04 14:40:54 :AVcc17
2010-08-04 14:42:49 :AVcc18
2010-08-04 16:04:30 :AVcc19
2010-08-04 16:18:51 :AAcc9

怎么得到
筛选后的内容
怎么做比较高效
2010-08-04 12:58:31 :AVcc12
2010-08-04 12:58:34 :AVcc13
2010-08-04 13:03:30 :AVcc14
2010-08-04 13:13:43 :AVcc15
2010-08-04 13:34:52 :AVcc16
2010-08-04 13:41:25 :AVcc17
2010-08-04 13:54:44 :AAcc1
2010-08-04 14:08:19 :AAcc9
2010-08-04 14:15:27 :AVcc7
2010-08-04 14:16:38 :AVcc6
2010-08-04 14:42:49 :AVcc18
2010-08-04 16:04:30 :AVcc19

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-8-5 22:49:36 | 显示全部楼层
Local $Str = FileRead('xx.txt')
Local $sR = StringRegExp($Str, '(.+\:(.+))[\r|$]', 3), $out
For $i = 1 To UBound($sR) - 1 Step 2
        If IsDeclared('_' & $sR[$i]) Then ContinueLoop
        $out &= $sR[$i - 1] & @CRLF
        Assign('_' & $sR[$i], 0)
Next
FileWrite('new.txt', $out)
发表于 2010-8-5 22:52:21 | 显示全部楼层
再上一段测试效率的代码,完成不超过1毫秒
Local $Str = _
                '2010-08-04 12:58:31 :AVcc12' & @CRLF & _
                '2010-08-04 12:58:34 :AVcc13' & @CRLF & _
                '2010-08-04 13:03:30 :AVcc14' & @CRLF & _
                '2010-08-04 13:13:43 :AVcc15' & @CRLF & _
                '2010-08-04 13:34:52 :AVcc16' & @CRLF & _
                '2010-08-04 13:41:25 :AVcc17' & @CRLF & _
                '2010-08-04 13:54:44 :AAcc1' & @CRLF & _
                '2010-08-04 14:08:19 :AAcc9' & @CRLF & _
                '2010-08-04 14:09:01 :AAcc1' & @CRLF & _
                '2010-08-04 14:15:27 :AVcc7' & @CRLF & _
                '2010-08-04 14:16:38 :AVcc6' & @CRLF & _
                '2010-08-04 14:21:39 :AVcc13' & @CRLF & _
                '2010-08-04 14:22:24 :AVcc14' & @CRLF & _
                '2010-08-03 12:44:16 :AVcc15' & @CRLF & _
                '2010-08-04 14:31:59 :AVcc16' & @CRLF & _
                '2010-08-04 14:40:54 :AVcc17' & @CRLF & _
                '2010-08-04 14:42:49 :AVcc18' & @CRLF & _
                '2010-08-04 16:04:30 :AVcc19' & @CRLF & _
                '2010-08-04 16:18:51 :AAcc9'

Local $ts = TimerInit()
Local $sR = StringRegExp($Str, '(.+\:(.+))[\r|$]', 3), $out
For $i = 1 To UBound($sR) - 1 Step 2
        If IsDeclared('_' & $sR[$i]) Then ContinueLoop
        $out &= $sR[$i - 1] & @CRLF
        Assign('_' & $sR[$i], 0)
Next
MsgBox(0, '耗时(ms):' & TimerDiff($ts), $out)
 楼主| 发表于 2010-8-5 22:58:27 | 显示全部楼层
正解 谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-11 05:48 , Processed in 0.073755 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表