如何读取文本里某行的数据,然后无限循环替换到完为止
本帖最后由 feixiang737 于 2013-3-15 13:43 编辑比如说有文本1---文本2---
--------------------文本1内容-------
,asdasd,阿什顿,345234,erferf,,,,,,,,,,
,随碟附送,额外定位,345234,erferf,,,,,,,,,,
-----------------------------------------------
-----------------文本2内容--------------------
123123
321321
--------------------------------
我想读取文本2的第一行内容,替换到文本1的第一行第2个逗号到第3个逗号的内容,
输出到文本3为变成
---------------文本3-------------------
,asdasd,123123,345234,erferf,,,,,,,,,,
,随碟附送,321321,345234,erferf,,,,,,,,,,
-------------------------------------
有多少行就循环多少次,直到循环完为止,这个该怎么写呢?求大神帮忙 Local $sText2 = '123123' & @CRLF & '321321'
Local $aSR = StringRegExp($sText2, '\V+', 3)
Local $sText1 = ',asdasd,阿什顿,345234,erferf,,,,,,,,,,' & @CRLF & _
',随碟附送,额外定位,345234,erferf,,,,,,,,,,'
For $i = 0 To UBound($aSR) - 1
$sText1 = StringRegExpReplace($sText1, '((?:\V+\v+){' & $i & '})(?m)(^,.+?,)[^,]+', '$1${2}' & $aSR[$i])
Next
MsgBox(0, '替换结果', $sText1) Local $file1 = FileOpen("1.txt", 0)
Local $file2 = FileOpen("2.txt", 0)
While 1
Local $line2 = FileReadLine($file2)
If @error = -1 Then ExitLoop
Local $line1 = FileReadLine($file1)
$line3 = StringRegExpReplace($line1, "(,[^,]*,)[^,]*(.*)", "${1}" & $line2 & "$2")
FileWriteLine("3.txt", $line3)
WEnd
Run("notepad 3.txt")
FileClose($file1)
FileClose($file2) 本帖最后由 feixiang737 于 2013-3-15 13:42 编辑
回复 3# shqf
3楼正解,谢谢,不过还是谢谢2楼,应该是我表达的不够清楚,所以2楼理解错了 3楼,求救下,昨天说错了,是第3个逗号到第4个逗号的内容输出到文本3,我昨天看了一晚,就是改不好,求解{:face (319):} 本帖最后由 shqf 于 2013-3-15 16:57 编辑
"(,[^,]*,[^,]*,)[^,]*(.*)"
这是替换第三个逗号至第四个逗号之间的内容。
顺便说一下,二楼是AFAN老大啊,他已告诉你解决问题的核心方法了,思路可不一般呵。至于读取、写入文件是小问题,要你自己动动手完成的呀。 本帖最后由 feixiang737 于 2013-3-15 21:32 编辑
回复 7# shqf
再次感谢,因为我还没学到正则这一块,所以研究了一晚都没研究成功。。
那正则我的理解是 逗号-不能为逗号--星星无解-不能为逗号-星星无解-星星无解
看了2-3行的替换,还有3-4行的替换,如果我是4-5行的替换的话,是否可以写成"(,[^,]*,[^,]*,[^,]*,)[^,]*(.*)"我估计应该是可行的,我去研究下,3Q各位大神 学习学习。。。。。。。。。。。。
页:
[1]