找回密码
 加入
搜索
查看: 21269|回复: 51

[AU3基础] (已解决) 如何只替换指定的字符串?谢谢!!!

 火.. [复制链接]
发表于 2011-6-13 21:33:49 | 显示全部楼层 |阅读模式
本帖最后由 131738 于 2011-6-16 17:06 编辑

问题已解决!想知道解决方法的,往下看回贴吧!
txt.txt 文本文件的数据
###File###
Wy File
FileName
My File Name
MyFileName
File
......
......
要求只替换第 6 行的 File 为“文件”,其它一律保持原样,为提高速度,用只替换一次的模式,不必区分大小写

我不知如何判断要替换的 File 前面有什么?,因为这是一个 txt 文件,所以这个 File 后面应该有一个回车吧,不会出现在文件结束行

要替换对象能判断的条件就是,始终是一个单词(或是2、 3 个单词的无空格连接书写),独占一行,且顶行起头。

乱打乱闯的瞎配正则表达式,结果一无所获,请求帮助解决!谢谢!!!
发表于 2011-6-13 22:05:38 | 显示全部楼层
本帖最后由 afan 于 2011-6-13 22:17 编辑

是这意思不
Local $Str = _
                '###ABCD###' & @CRLF & _
                'AbcD' & @CRLF & 'ABCD'
MsgBox(0, '源字符串', $str)
Local $szSearchString = 'Abcd'
Local $szReplaceString = '1234'
Local $Test = StringRegExpReplace($str, '(?i)(?<!###)\Q' & $szSearchString & '\E', $szReplaceString, 1)
MsgBox(0, '替换结果', $Test)
 楼主| 发表于 2011-6-13 22:22:39 | 显示全部楼层
是这意思不
afan 发表于 2011-6-13 22:05


刚看到你上来,正准备短信请教的,谢谢!!!代码我看看。。。。
 楼主| 发表于 2011-6-13 22:55:16 | 显示全部楼层
回复 2# afan

谢谢!!!代码效果很好!!!可惜我不会引申应用。。。

###ABCD###' 只是个特例,还用一些其它的情况,
StringRegExpReplace($str, '(?i)(?<!###)\Q' & $szSearchString & '\E', $szReplaceString, 0)
这句代码对其它情况要替换的文本,我不知如何应用,有否完全匹配替换文本的通用正则语句呢?
发表于 2011-6-13 23:03:09 | 显示全部楼层
_ReplaceStringInFile("F:\txt.txt", "ABCD", "1234", 0, 1)
发表于 2011-6-13 23:03:21 | 显示全部楼层
回复  afan

谢谢!!!代码效果很好!!!可惜我不会引申应用。。。

###ABCD###' 只是个特例,还用一 ... 完全匹配替换文本的通用正则语句...
131738 发表于 2011-6-13 22:55



    呵呵,“完全匹配替换文本的通用正则语句”不知道是全部替换还是? 如果是全部替换,上面的最后一个参数由1改为0即可。

前辈在一楼所提出的问题,则不光是完全匹配的意思了,还有前面不能是“###”的前提,所以,具体问题具体对待,所谓的“完全匹配替换文本的通用正则语句”可能不能如此阐述,因为可能有许多的“要求”,我想这正是正则替换“StringRegExpReplace()”与普通替换“StringReplace()”的区别所在了。
发表于 2011-6-13 23:08:27 | 显示全部楼层
请问前辈,需要替换的ABCD是单独的一行吗?
 楼主| 发表于 2011-6-13 23:11:07 | 显示全部楼层
回复 6# afan

谢谢!!!不懂的尽说了外行话,见笑了,我再看看你的  _FileSRER2Line   UDF 函数
发表于 2011-6-13 23:15:29 | 显示全部楼层
本帖最后由 afan 于 2011-6-13 23:18 编辑
_ReplaceStringInFile("F:\txt.txt", "ABCD", "1234", 0, 1)
netegg 发表于 2011-6-13 23:03

    蛋蛋没看清题,呵呵~


请问前辈,需要替换的ABCD是单独的一行吗?
3mile 发表于 2011-6-13 23:08

    我估计这个不太重要,呵呵~


回复  afan

谢谢!!!不懂的尽说了外行话,见笑了,我再看看你的  _FileSRER2Line   UDF 函数
131738 发表于 2011-6-13 23:11

    哪里,前辈谦虚了,要说外行,咱可是地地道道的~~ _FileSRER2Line() 可以满足许多要求,但没有一楼的要求,哈
 楼主| 发表于 2011-6-13 23:29:34 | 显示全部楼层
本帖最后由 131738 于 2011-6-13 23:32 编辑

回复 9# afan
#              文件路径,   '搜索字',  '替换', 整行需完全匹配, 正则标志, 回车符
_FileSRER2Line('Test.txt', '关键字', '替换字',      1,         1,      1 )
还没测试,这句不适合 1 楼么?
发表于 2011-6-13 23:31:53 | 显示全部楼层
回复 10# 131738


    如果是“整行需完全匹配”那就可以,不过,真是只有“ABCD”吗?
 楼主| 发表于 2011-6-13 23:37:44 | 显示全部楼层
回复 11# afan

我只要求完全匹配 ABCD , 排除 ABCD 前后有任何字符的情况!
发表于 2011-6-13 23:39:10 | 显示全部楼层
本帖最后由 afan 于 2011-6-13 23:40 编辑

回复 12# 131738


    那就没问题,_FileSRER2Line() 可以满足。同时证明 3mile 的提问是很有见地的……
 楼主| 发表于 2011-6-13 23:40:03 | 显示全部楼层
回复  131738


    如果是“整行需完全匹配”那就可以,不过,真是只有“ABCD”吗?
afan 发表于 2011-6-13 23:31


我的替换操作都是以整行为目标的
发表于 2011-6-13 23:41:49 | 显示全部楼层
我的替换操作都是以整行为目标的
131738 发表于 2011-6-13 23:40



    那就用它吧,记得关闭“正则标志”
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 08:29 , Processed in 0.084566 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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