ndyzx 发表于 2012-8-29 08:54:39

救教:如何把文本中的一定内容导入列表框【已解决】

本帖最后由 ndyzx 于 2012-9-1 13:43 编辑

Deployment Image Servicing and Management tool
Version: 6.2.9200.16384

映像的详细信息: D:\TDDOWNLOAD\cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486\sources\install.wim

索引: 1
名称: Windows 7 STARTER
描述: Windows 7 STARTER
大小: 8,119,970,326 个字节

索引: 2
名称: Windows 7 HOMEBASIC
描述: Windows 7 HOMEBASIC
大小: 8,140,142,765 个字节

索引: 3
名称: Windows 7 HOMEPREMIUM
描述: Windows 7 HOMEPREMIUM
大小: 8,581,939,355 个字节

索引: 4
名称: Windows 7 PROFESSIONAL
描述: Windows 7 PROFESSIONAL
大小: 8,463,989,395 个字节

索引: 5
名称: Windows 7 ULTIMATE
描述: Windows 7 ULTIMATE
大小: 8,624,220,791 个字节

The operation completed successfully.

D:\>如上,我要在列表框中显示如下:
1、 Windows 7 STARTER
2、Windows 7 HOMEPREMIUM
3、Windows 7 HOMEPREMIUM
......

最好用正则怎么实现,请指教。

水木子 发表于 2012-8-29 10:00:45

你确定:2、Windows 7 HOMEPREMIUM
而不是:2、Windows 7 HOMEBASIC

andersonljw 发表于 2012-8-29 10:04:55

呵呵,跟踪中。。

ndyzx 发表于 2012-8-29 15:04:11

回复 2# 水木子
是不定的,因为该文本文件是用DISM.EXE提取不同映像的MXL件。

duck904 发表于 2012-8-29 16:23:49

#include <Array.au3>

$hFile = FileOpen ( "aaa.txt" )
$i = 1
$sStr = ""
$sLine = FileReadLine ($hFile)
While @error = 0
        $sTmp = StringRegExpReplace($sLine, "名称: (.*)", "$1")
        If @error = 0 And @extended <> 0 Then
                $sStr =$sStr & $i & "、" & $sTmp & @LF
                $i = $i+1
        EndIf
        $sLine = FileReadLine ($hFile)
WEnd

$aArray = StringSplit($sStr,@LF)
_ArrayDisplay($aArray)

ndyzx 发表于 2012-8-29 16:44:21

回复 5# duck904
谢谢,可以实现,但就是增加了一个序号跑到第一行了。

duck904 发表于 2012-8-29 17:44:40

回复 6# ndyzx

1.$sStr最后多了个@LF,所以最后会多个空的
2.StingSplit()时候,数组表示数组元素的个数,所以GUI中第一个是个数字
自己加2个判断,处理下就好了

user3000 发表于 2012-8-29 21:50:11

回复 7# duck904
没尝试5楼的代码, 不知道我这样合用不?

#include <array.au3>
Local $txt = ClipGet()
$str = StringRegExp($txt, '名称: (\V+)', 3)
_ArrayDisplay($str)

andersonljw 发表于 2012-8-30 12:41:03

$str = StringRegExp($txt, '名称: (\V+)', 3)正解

ndyzx 发表于 2012-8-30 16:58:09

回复 8# user3000
还是不行,还是有点乱。

ndyzx 发表于 2012-8-31 08:42:58

回复 1# ndyzx
沉下去了,自己再顶一下,看看还有没有更好的解决办法。

shqf 发表于 2012-8-31 09:53:16

楼主,你4楼、10楼的回答太“轻松”了吧。
你想用正则解决,8楼已给出核心代码了呀。
提取已是没有问题,对提取的内容稍加整理,加上序号和顿号,就能得到你所想要的。
至于如何导入到列表框中,那是GUICtrlCreateList、GUICtrlSetData等函数能办到。
因为整理、导入等是基本内容,回答的人可能就省略了,须自己再花点儿功夫的。如果是对基本的整理、导入等也不知的话,那你得把问题问仔细了。也会有人给你回答的。
如果你想用一二句语句,或就用正则来解决如何提取、整理、导入的话,那是你把问题想得太简单了。
如果只是想做伸手党的话,恐怕不如你所愿呵。

ndyzx 发表于 2012-9-1 13:41:07

回复 12# shqf
很正确,其实8楼除正则外,使用剪编文本环境变量很简洁。虚心接受批评。

ndyzx 发表于 2012-9-1 13:42:10

回复 8# user3000
谢谢帮助。
页: [1]
查看完整版本: 救教:如何把文本中的一定内容导入列表框【已解决】