bbip 发表于 2009-5-19 17:15:23

字符串处理问题

本帖最后由 bbip 于 2009-5-19 21:56 编辑

我想从如下文本中提取所有的共享名和资源,该用什么函数进行处理呢? 我试了很多 都失败了...
求高手帮忙谢谢啦


共享名       资源                            注释

-------------------------------------------------------------------------------
IPC$                                       远程 IPC                        
bak            D:\bak                        
image      D:\image                        
命令成功完成。

autosonix 发表于 2009-5-19 17:23:40

你可以使用StringSplit()这个函数来,以空格做间隔,一行一行读出来做处理就能得到了。

bbip 发表于 2009-5-19 17:34:15

中间有很多空格 而且空格数量也不固定,用空格分割不太理想啊 而且 如果文本内容发生了变化程序就要重写。太麻烦了还有更好的方法吗?

bbip 发表于 2009-5-19 17:50:43

高手还没出现...........

pcbar 发表于 2009-5-19 21:29:49

#include "array.au3"
$t = getpath(@ScriptDir & '\tmp.txt')
_ArrayDisplay($t)

Func getpath($file)
        if not FileExists($file) Then
                Return
                SetError(1)
        EndIf
        Local $array
        $f = FileOpen($file, 0)
        While 1
                $chars = FileReadLine($f)
                If @error = -1 Then ExitLoop
                ;TrayTip("", $chars, 2)
                $path = StringRegExp(StringStripWS($chars,2), ':(\\[^/:\*\?<>\\|]+)*', 2)
                if IsArray($path) Then
                        _ArrayAdd($array, StringStripWS(StringRegExpReplace($chars, ':(\\[^/:\*\?<>\\|]+)*', ''), 3) & ',' & $path)
                EndIf
        Wend
        _ArrayDelete($array,0)
        FileClose($f)
        Return $array
EndFunc   ;==>getpath

cmirt 发表于 2009-5-19 21:40:07

强大的正规则

bbip 发表于 2009-5-19 21:54:25

谢谢 pcbar   高手就是高手正则表达式确实够强大可惜看不懂

顽固不化 发表于 2009-5-19 21:57:26

正则表达式强大

pcbar 发表于 2009-5-20 08:14:41

7# bbip


:(\\[^/:\*\?<>\\|]+)*
注释一下:
:英文字母(大写或小写)后面紧跟一个冒号
(\\[^/:\*\?<>\\|]+)括号里面的内容为一组,类似数学表达式中的括号,\\表示"\",前一个\为转义符,后面的\\与此相同,[^/:\*\?<>\\|]+除了/:\*\?<>\|的字符重复1次或更多次
*括号中的内容重复0次或更多次
其实就是匹配一个合法的文件夹表达式

顽固不化 发表于 2009-5-20 08:19:36

学习周星星老师了~~~

bbip 发表于 2009-5-20 10:49:03

谢谢pcbar   总算对表达式有所了解了

menfan 发表于 2009-5-21 20:48:56

收下,学习。。
页: [1]
查看完整版本: 字符串处理问题