找回密码
 加入
搜索
查看: 1209|回复: 3

stringreplace後不能寫入文件?

[复制链接]
发表于 2009-4-28 22:13:39 | 显示全部楼层 |阅读模式
本帖最后由 wongfung 于 2009-4-30 13:50 编辑

我想將這個文件
-----------------
id="1"
aaa
bbb
id="12"
aaa
bbb
id="123"
aaa
bbb
-----------------
變成
-----------------

001Line1
001Line2

012Line1
012Line2

123Line1
123Line2
-----------------

於是寫了以下代碼:
#Include <File.au3>
#include <Array.au3>

$file = FileOpenDialog("Open", @WorkingDir, "All Files(*.*)" , 1 )
FileCopy($file, $file & "_converted", 1)

Local $aLine, $id

_FileReadToArray($file & "_converted", $aLine)

$i = 1
While $i < UBound($aLine)
        If Stringleft($aLine[$i], 4) = 'id="' Then
            $id = StringTrimRight ( $aLine[$i], 1 )
            $id = StringMid($id, 5)
            $id = StringRight("000" & $id, 3)
                        $line1 = StringReplace($aLine[$i+1], "aaa", $id & "Line1" )
                        $line2 = StringReplace($aLine[$i+2], "bbb", $id & "Line2" )
                        _ArrayDelete($aLine, $i)
    Else
            $i += 2
        EndIf
WEnd

_FileWriteFromArray($file & "_converted", $aLine, 1)

MsgBox( 0, "", "OK")

結果只有id那行給刪掉, 但aaa跟bbb沒有給replace...
請問如何解決???
代碼應如何改寫???
发表于 2009-4-29 01:09:23 | 显示全部楼层
。。。暴汗,还是这个问题,三天了都没解决?
文件读入到数组后,修改就是改$aLine[$i]的值。仔细想想吧。

#Include <File.au3>
#include <Array.au3>

$file = FileOpenDialog("Open", @WorkingDir, "All Files(*.*)" , 1 )
FileCopy($file, $file & "_converted", 1)

Local $aLine, $id, $iLine

_FileReadToArray($file & "_converted", $aLine)

For $i = 1 To $aLine[0]
        If StringLeft($aLine[$i], 4) = 'id="' Then
                $id = StringTrimRight($aLine[$i], 1)
                $id = StringMid($id, 5)
                $id = StringRight("000" & $id, 3)
                $iLine = 1
                $aLine[$i] = ""
        ElseIf $id <> "" Then
                $aLine[$i] = $id & "Line" & $iLine
                $iLine += 1
        EndIf
Next

_FileWriteFromArray($file & "_converted", $aLine, 1)

MsgBox( 0, "", "OK")
发表于 2009-4-29 02:51:11 | 显示全部楼层
。。。暴汗,还是这个问题,三天了都没解决?
文件读入到数组后,修改就是改$aLine[$i]的值。仔细想想吧。

#Include <File.au3>
#include <Array.au3>

$file = FileOpenDialog("Open", @WorkingDir, "All Files(*.*)" , 1 )
FileCopy($file, $file & "_converted", 1)

Local $aLine, $id, $iLine

_FileReadToArray($file & "_converted", $aLine)

For $i = 1 To $aLine[0]
        If StringLeft($aLine[$i], 4) = 'id="' Then
                $id = StringTrimRight($aLine[$i], 1)
                $id = StringMid($id, 5)
                $id = StringRight("000" & $id, 3)
                $iLine = 1
                $aLine[$i] = ""
        ElseIf $id <> "" Then
                $aLine[$i] = $id & "Line" & $iLine
                $iLine += 1
        EndIf
Next

_FileWriteFromArray($file & "_converted", $aLine, 1)

MsgBox( 0, "", "OK")
 楼主| 发表于 2009-4-30 17:48:10 | 显示全部楼层
本帖最后由 wongfung 于 2009-4-30 17:50 编辑
。。。暴汗,还是这个问题,三天了都没解决?
文件读入到数组后,修改就是改$aLine[$i]的值。仔细想想吧。

#Include
#include

$file = FileOpenDialog("Open", @WorkingDir, "All Files(*.*)" , 1 )
File ...
sensel 发表于 2009-4-29 02:51


原來要定義回aline[$i]是甚麼的啊
明白了...

不過下面的條件不太明白???
$aLine[$i] = ""
        ElseIf $id <> "" Then
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 22:21 , Processed in 0.078690 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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