ayumi502 发表于 2011-7-9 17:32:25

字符串提取问题,急用!

因为本人在研究部署界面,需要读取到配置文件中的软件的名称,本人正则一窍不通,望哪位达人告知一下怎么提取如下项目所示的 "EasyDrv3.5.exe" 这些应用程序的名称呢??


1=|1|Exe|C:\Sysprep\EasyDrv3.5.exe|||4|4|4||
2=|5|Exe|C:\WINDOWS\智能驱动删除询问v2.0.2.exe|||4|4|4||
3=|5|Exe|C:\WINDOWS\ip地址修改器.exe|||4|1|4||
4=|5|Exe|C:\Soft\Softprep.exe|||4|1|4||

谢谢~~~

zmj2008 发表于 2011-7-9 17:37:03

读取配置文件 例如
1=|1|Exe|C:\Sysprep\EasyDrv3.5.exe|||4|4|4||
读取后利用字符串分割分割符号为“|” 就能得到你想要的字符串

love5173 发表于 2011-7-9 17:53:53

$array=StringRegExp($str,':.*\\([^\|]+)',3)

hzxymkb 发表于 2011-7-9 20:15:53

我不会正则
就用这个吧
StringSplit
--------------------------------------------------------------------------------

以指定分隔符把字符串拆分成若干子串.


StringSplit ( "字符串", "分隔符" [, 标志 ] )




参数

字符串 目标字符串.
分隔符 一个或多个作为分隔符的字符(case sensitive).
标志 [可选参数]
若标志为0(默认值),则(分隔符)字符串中的每个字符都将用于拆分字符串.
若标志为1,则只能以整个分隔符字符串来拆分字符串.
若标志为2,关闭第一个元素中的返回数量 - 方便使用 UBound() 得到此基于0开始的数组.



返回值

返回值 返回一个数组,第一个元素($array)保存拆分后子串的数量,其余元素($array,$array 等等)则保存着拆分后的每个字符串.
若(在目标字符串中)未发现分隔符则 @error 将被设为1,子串数量($array)等于1,而函数将返回整个字符串($array).



注意/说明

若给定的分隔符是个空字符串 "",则每个字符将作为数组元素返回.

若分隔符是子串而不是单个字符,请参考下面的第二个示例.

StringSplit 有时候可以作为代替 StringInStr() 函数的更好选择,因为它可以组建数组.

小心:如果您使用宏 @CRLF ,可能会出现额外的空白行.

user3000 发表于 2011-7-10 00:58:24

我的建议是自己多试试用 stringsplit
别人帮得了你一时,帮不了一世,既然你学AU3,就要自己学会多看帮助!
其实这是比较基础的东西了

happytc 发表于 2011-7-10 01:02:12

stringsplit 虽然简单,但au3对数组处理得不是很好,若是数组大点,速度明显慢

还是用正则好

ayumi502 发表于 2011-7-10 01:23:00

回复 2# zmj2008


谢谢你的提醒~~
页: [1]
查看完整版本: 字符串提取问题,急用!