救教:如何把文本中的一定内容导入列表框【已解决】
本帖最后由 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
......
最好用正则怎么实现,请指教。 你确定:2、Windows 7 HOMEPREMIUM
而不是:2、Windows 7 HOMEBASIC 呵呵,跟踪中。。 回复 2# 水木子
是不定的,因为该文本文件是用DISM.EXE提取不同映像的MXL件。 #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) 回复 5# duck904
谢谢,可以实现,但就是增加了一个序号跑到第一行了。 回复 6# ndyzx
1.$sStr最后多了个@LF,所以最后会多个空的
2.StingSplit()时候,数组表示数组元素的个数,所以GUI中第一个是个数字
自己加2个判断,处理下就好了 回复 7# duck904
没尝试5楼的代码, 不知道我这样合用不?
#include <array.au3>
Local $txt = ClipGet()
$str = StringRegExp($txt, '名称: (\V+)', 3)
_ArrayDisplay($str) $str = StringRegExp($txt, '名称: (\V+)', 3)正解 回复 8# user3000
还是不行,还是有点乱。 回复 1# ndyzx
沉下去了,自己再顶一下,看看还有没有更好的解决办法。 楼主,你4楼、10楼的回答太“轻松”了吧。
你想用正则解决,8楼已给出核心代码了呀。
提取已是没有问题,对提取的内容稍加整理,加上序号和顿号,就能得到你所想要的。
至于如何导入到列表框中,那是GUICtrlCreateList、GUICtrlSetData等函数能办到。
因为整理、导入等是基本内容,回答的人可能就省略了,须自己再花点儿功夫的。如果是对基本的整理、导入等也不知的话,那你得把问题问仔细了。也会有人给你回答的。
如果你想用一二句语句,或就用正则来解决如何提取、整理、导入的话,那是你把问题想得太简单了。
如果只是想做伸手党的话,恐怕不如你所愿呵。 回复 12# shqf
很正确,其实8楼除正则外,使用剪编文本环境变量很简洁。虚心接受批评。 回复 8# user3000
谢谢帮助。
页:
[1]