(已解决) 如何只替换指定的字符串?谢谢!!!
本帖最后由 131738 于 2011-6-16 17:06 编辑问题已解决!想知道解决方法的,往下看回贴吧!
txt.txt 文本文件的数据###File###
Wy File
FileName
My File Name
MyFileName
File
......
......要求只替换第 6 行的 File 为“文件”,其它一律保持原样,为提高速度,用只替换一次的模式,不必区分大小写
我不知如何判断要替换的 File 前面有什么?,因为这是一个 txt 文件,所以这个 File 后面应该有一个回车吧,不会出现在文件结束行
要替换对象能判断的条件就是,始终是一个单词(或是2、 3 个单词的无空格连接书写),独占一行,且顶行起头。
乱打乱闯的瞎配正则表达式,结果一无所获,请求帮助解决!谢谢!!! 本帖最后由 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) 是这意思不
afan 发表于 2011-6-13 22:05 http://autoitx.com/images/common/back.gif
刚看到你上来,正准备短信请教的,谢谢!!!代码我看看。。。。 回复 2# afan
谢谢!!!代码效果很好!!!可惜我不会引申应用。。。
###ABCD###' 只是个特例,还用一些其它的情况,StringRegExpReplace($str, '(?i)(?<!###)\Q' & $szSearchString & '\E', $szReplaceString, 0)
这句代码对其它情况要替换的文本,我不知如何应用,有否完全匹配替换文本的通用正则语句呢? _ReplaceStringInFile("F:\txt.txt", "ABCD", "1234", 0, 1) 回复afan
谢谢!!!代码效果很好!!!可惜我不会引申应用。。。
###ABCD###' 只是个特例,还用一 ... 完全匹配替换文本的通用正则语句...
131738 发表于 2011-6-13 22:55 http://www.autoitx.com/images/common/back.gif
呵呵,“完全匹配替换文本的通用正则语句”不知道是全部替换还是? 如果是全部替换,上面的最后一个参数由1改为0即可。
前辈在一楼所提出的问题,则不光是完全匹配的意思了,还有前面不能是“###”的前提,所以,具体问题具体对待,所谓的“完全匹配替换文本的通用正则语句”可能不能如此阐述,因为可能有许多的“要求”,我想这正是正则替换“StringRegExpReplace()”与普通替换“StringReplace()”的区别所在了。 请问前辈,需要替换的ABCD是单独的一行吗? 回复 6# afan
谢谢!!!不懂的尽说了外行话,见笑了,我再看看你的_FileSRER2Line UDF 函数 本帖最后由 afan 于 2011-6-13 23:18 编辑
_ReplaceStringInFile("F:\txt.txt", "ABCD", "1234", 0, 1)
netegg 发表于 2011-6-13 23:03 http://www.autoitx.com/images/common/back.gif
蛋蛋没看清题,呵呵~
请问前辈,需要替换的ABCD是单独的一行吗?
3mile 发表于 2011-6-13 23:08 http://www.autoitx.com/images/common/back.gif
我估计这个不太重要,呵呵~
回复afan
谢谢!!!不懂的尽说了外行话,见笑了,我再看看你的_FileSRER2Line UDF 函数
131738 发表于 2011-6-13 23:11 http://www.autoitx.com/images/common/back.gif
哪里,前辈谦虚了,要说外行,咱可是地地道道的~~ _FileSRER2Line() 可以满足许多要求,但没有一楼的要求,哈 本帖最后由 131738 于 2011-6-13 23:32 编辑
回复 9# afan # 文件路径, '搜索字','替换', 整行需完全匹配, 正则标志, 回车符
_FileSRER2Line('Test.txt', '关键字', '替换字', 1, 1, 1 )还没测试,这句不适合 1 楼么? 回复 10# 131738
如果是“整行需完全匹配”那就可以,不过,真是只有“ABCD”吗? 回复 11# afan
我只要求完全匹配 ABCD , 排除 ABCD 前后有任何字符的情况! 本帖最后由 afan 于 2011-6-13 23:40 编辑
回复 12# 131738
那就没问题,_FileSRER2Line() 可以满足。同时证明 3mile 的提问是很有见地的…… 回复131738
如果是“整行需完全匹配”那就可以,不过,真是只有“ABCD”吗?
afan 发表于 2011-6-13 23:31 http://autoitx.com/images/common/back.gif
我的替换操作都是以整行为目标的 我的替换操作都是以整行为目标的
131738 发表于 2011-6-13 23:40 http://www.autoitx.com/images/common/back.gif
那就用它吧,记得关闭“正则标志”