找回密码
 加入
搜索
查看: 4015|回复: 7

[系统综合] 如何读取文本里某行的数据,然后无限循环替换到完为止

  [复制链接]
发表于 2013-3-13 15:50:04 | 显示全部楼层 |阅读模式
本帖最后由 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,,,,,,,,,,
-------------------------------------
有多少行就循环多少次,直到循环完为止,这个该怎么写呢?求大神帮忙
发表于 2013-3-13 18:38:40 | 显示全部楼层
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)
发表于 2013-3-13 20:38:26 | 显示全部楼层
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)
 楼主| 发表于 2013-3-13 22:11:04 | 显示全部楼层
本帖最后由 feixiang737 于 2013-3-15 13:42 编辑

回复 3# shqf

3楼正解,谢谢,不过还是谢谢2楼,应该是我表达的不够清楚,所以2楼理解错了
 楼主| 发表于 2013-3-15 13:41:43 | 显示全部楼层
3楼,求救下,昨天说错了,是第3个逗号到第4个逗号的内容输出到文本3,我昨天看了一晚,就是改不好,求解
发表于 2013-3-15 16:47:14 | 显示全部楼层
本帖最后由 shqf 于 2013-3-15 16:57 编辑

"(,[^,]*,[^,]*,)[^,]*(.*)"
这是替换第三个逗号至第四个逗号之间的内容。
顺便说一下,二楼是AFAN老大啊,他已告诉你解决问题的核心方法了,思路可不一般呵。至于读取、写入文件是小问题,要你自己动动手完成的呀。
 楼主| 发表于 2013-3-15 21:26:43 | 显示全部楼层
本帖最后由 feixiang737 于 2013-3-15 21:32 编辑

回复 7# shqf


    再次感谢,因为我还没学到正则这一块,所以研究了一晚都没研究成功。。
那正则我的理解是 逗号-不能为逗号--星星无解-不能为逗号-星星无解-星星无解
看了2-3行的替换,还有3-4行的替换,如果我是4-5行的替换的话,是否可以写成"(,[^,]*,[^,]*,[^,]*,)[^,]*(.*)"  我估计应该是可行的,我去研究下,3Q各位大神
发表于 2013-3-15 21:36:51 | 显示全部楼层
学习学习。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-9 08:19 , Processed in 0.080816 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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