找回密码
 加入
搜索
楼主: 131738

[AU3基础] (已解决)请 afan 帮助修改正则替换代码, 谢谢!

 火... [复制链接]
发表于 2012-3-16 00:04:16 | 显示全部楼层
各位辛苦了,再顶下
 楼主| 发表于 2012-3-16 00:06:04 | 显示全部楼层
回复  131738


    你这样是十分不便于维护的,建议使用配置文件,字段名就是文件路径,关键字是查找项 ...
afan 发表于 2012-3-15 23:52


难道是 $i 循环可以捕捉行号???????
发表于 2012-3-16 00:08:11 | 显示全部楼层
回复 47# 131738


    $i 不是行号,是相对字段名的行号,你要行号是想直接跳到指定位置?
发表于 2012-3-16 00:15:47 | 显示全部楼层
数组不就是存放数据方便吗
对应编号咯
还有我觉得大叔该写个适合自己自动化的,官网的好像必须要scite的吧
 楼主| 发表于 2012-3-16 03:11:50 | 显示全部楼层
本帖最后由 131738 于 2012-3-16 03:14 编辑
回复  131738


    看懂了,是连续的,那就好办了
afan 发表于 2012-3-15 23:38


如果用配置文件,无论下一版本如何添加删除修改, 都能保证连续性了,
但 StringRegExpReplace() 能否一次只替换一个 " 关键字 = 值 ",
而不是一次替换整个字段的所有 " 关键字 = 值 " 呢?
主要是要求替换失败时要记录 字段名 加一个 " 关键字 = 值 " 的信息,方便替换失败的修改.
一次替换整个 .txt 文件是无法记录失败行的文本信息的,
而且一次替换整个 .txt 文件 不可能会出现失败, 但也无法保证该文件完全替换成功.

下午我再具体试写代码看看.....
发表于 2012-3-16 03:16:32 | 显示全部楼层
回复 50# 131738


    本来就是一次替换一组的,只是写入时是替换完全部后一次性写入,在替换过程中可以返回具体信息,看你怎么用了。
3点多了,老革命也要休息了吧…
发表于 2012-3-16 06:59:36 | 显示全部楼层
一楼看到51楼  没看懂。。。。
高手云集啊   顶起来
发表于 2012-3-16 09:38:41 | 显示全部楼层
试下将$Test = _ReplaceStringInFile($aWinAPIEx[$k][2], $aWinAPIEx[$k][0], $aWinAPIEx[$k][1], 0, 0)这两行改为试下,貌似前辈在替换过程中将所有包含(或小于)关键字的内容也一并替换了.

$Test=StringRegexpReplace(FileRead($aWinApiEx[$k][2]),"\Q"&$aWinApiEx[$k][0]&"\E\b",$aWinApiEx[$k][1])
 楼主| 发表于 2012-3-16 13:12:20 | 显示全部楼层
试下将$Test = _ReplaceStringInFile($aWinAPIEx[$k][2], $aWinAPIEx[$k][0], $aWinAPIEx[$k][1], 0, 0)这两 ...
3mile 发表于 2012-3-16 09:38


谢谢!!!好像是一次替换一行文本。。。我试试看。。。
 楼主| 发表于 2012-3-16 13:18:14 | 显示全部楼层
回复  131738


    本来就是一次替换一组的,只是写入时是替换完全部后一次性写入,在替换过程中可以返 ...
afan 发表于 2012-3-16 03:16


想了想,使用配置文件对增删修改的维护确实方便,我准备先修改到 ini 再来请教....
发表于 2012-3-16 13:24:01 | 显示全部楼层
回复 56# 131738


    只要单个字段不要超过 32767 个字符,直接使用内置的Ini*函数读写,很方便~
为了方便维护,最好使用N个Ini文件,比如 WinAPIEx.ini,AutoIt3CHS.ini,UDFs3CHS.ini等
 楼主| 发表于 2012-3-16 15:47:06 | 显示全部楼层
回复  131738


    只要单个字段不要超过 32767 个字符,直接使用内置的Ini*函数读写,很方便~
为了方 ...
afan 发表于 2012-3-16 13:24


这个数组时就分了的,最大一个数组的 SciTE 行数 29500 行
 楼主| 发表于 2012-3-16 15:50:55 | 显示全部楼层
回复 57# afan

"单个字段不要超过 32767 个字符"  是指:

[字段]
xxxx1=aaa1
......
xxxx(n)=aaaa(n)
发表于 2012-3-16 15:52:06 | 显示全部楼层
回复 59# 131738


    是的,注意是字符数,不是行数
 楼主| 发表于 2012-3-17 13:03:00 | 显示全部楼层
回复  131738


    你这样是十分不便于维护的,建议使用配置文件,字段名就是文件路径,关键字是查找项 ...
afan 发表于 2012-3-15 23:52


ini 文件不行!函数名字段下的:
[optional](可选参数)开头的关键字 被 $var = IniReadSectionNames($ini) 读成了字段,
循环 $var1 = IniReadSection ( $ini, $var[$k] ) 读字段的全部关键字和值时;
设置 If $var[$k] = 'optional' Then ContinueLoop  , 结果没有了 [optional] 以后的所有文本!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 12:28 , Processed in 0.066865 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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