skywhy 发表于 2010-1-27 19:36:45

修改文本问题。。。在线等····

本帖最后由 skywhy 于 2010-1-27 21:30 编辑

我有一个txt的文件
文件名:a.txt
文件的内容如下:
a,1,3213,6465
b,2,6546,3464
c,3,4664,3216
d,4,4543,3154


我有个输入框根据a,b,c,d这几个是值查找来修改后面的值。
比如说:我要修改b行的6546改成6666,其他的内容都不要修改。

麻烦高手解答····

llztt 发表于 2010-1-27 20:06:30

一个思路:读取整个文件的内容,使用正则StringRegExpReplace替换之,替换文件内容保存
第二个思路:循环读取文件每一行,每行检测直到目标行修改之,把每行内容按顺序合并,写文件保存

skywhy 发表于 2010-1-27 20:13:13

$list = FileOpen("D:\a.txt",02)
If $list = -1 Then
      MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
$linehao = 0
While 1
    $linehao = $linehao + 1
    $line = FileReadLine($list)
    If @error = -1 Then ExitLoop
   $linet=StringSplit($line,",")       
if $jihao = $linet and $cardid = $linet Then
   $linetiem = StringSplit($linet,":")
if $linetiem = 0 then
                                                               
   MsgBox(0, "错误", "不能偷取该好友果实!")
Else

$linem = $linet - $m
$linetiemt =$linetiem - $time
   _FileWriteToLine("D:\a.txt", $linehao, $linet&","&$linet&","&$linet&","&$linem&","&$linetiemt&":"&$linetiem, 1)
EndIf
Else
   MsgBox(0,"错误","qq好友对比失败。")
EndIf
                                               
Wend


这是我这段代码 运行后是a.txt里面的全不在了 ···

llztt 发表于 2010-1-27 20:16:50

本帖最后由 llztt 于 2010-1-27 20:23 编辑

代码中$m $time干嘛的,前面声明了?


不能偷取该好友果实
哈哈,帅啊。。做好了共享下啊,我要偷偷偷

skywhy 发表于 2010-1-27 20:26:54

前面定义了的,这个还在测试中。写完了给你。这两个相当于a.txt中的a和1
要查询了这想个变量相等才能够修改后面的值。
运行后a.txt中的内容全部都没有了

llztt 发表于 2010-1-27 20:39:44

问题在这里FileOpen("c:\a.txt",2)
一运行,就清空文件内容了

skywhy 发表于 2010-1-27 20:40:41

那应该用什么方式打开???

skywhy 发表于 2010-1-27 20:41:59

知道了 查了帮助文件谢谢你了
不好意思记错了
基础不过关啊 继续测试

llztt 发表于 2010-1-27 20:43:15

本帖最后由 llztt 于 2010-1-27 21:33 编辑

FILEOPEN
0 = 只读模式(默认)
1 = 写入模式(附加数据到文件尾部)
2 = 写入模式(先删除之前的内容)

如果你非要一边读一边写的话,还是用只读模式打开a.txt同时写数据到b.txt,然后关闭a.txt文件句柄,再让b.txt替换a.txt
如果替换就一行的话,也可以只读打开a.txt,循环检测每行找到目标行,记住行号和行内容,跳出循环,关闭文件句柄,然后filewriteline之

因为你的文件内容很有规律,建议你用正则,读取一次文件,修改、替换、保存,简洁高效。。。

skywhy 发表于 2010-1-27 21:24:30

麻烦你了····一言点醒·····
页: [1]
查看完整版本: 修改文本问题。。。在线等····