autoit - 文本文件中的最后一行未使用_ArrayDelete进行重新转移

时间:2014-06-03 21:15:54

标签: autoit

这应该是删除文本文件中匹配的字符串。我通过For循环运行它并且正常工作直到它到达最后一行。如果文本文件中只剩下一行,则不会删除它。

有什么想法吗?

我的代码如下。

$file = "lines.txt"
FileOpen($file, 0)

For $i = 1 to _FileCountLines($file)
$line = FileReadLine($file, $i)

Func _DeleteArrayElementWithStringInstr ( $_Array, $_String )
Local $_Item
For $_Element In $_Array
    If StringInStr ( $_Element, $_String ) <> 0 Then
        _ArrayDelete ( $_Array, $_Item )
    Else
        $_Item+=1
    EndIf
Next
Return ( $_Array )
EndFunc ;==> _DeleteArrayElementWithStringInstr ( )

Global $_Array
_FileReadToArray ( 'lines.txt', $_Array )
$_Array = _DeleteArrayElementWithStringInstr ( $_Array, $line )
_FileWriteFromArray ( 'lines.txt', $_Array, 1 )
Exit

lines.txt simple contains

test@example.com
email@example.com
hello@example.com

1 个答案:

答案 0 :(得分:0)

我假设您的文件实际上包含三行以上,但最后一行可能为空。因此,您应该使用for循环并检查您的最后一个元素是否等于空字符串。如果是这样,请调用_ArrayDelete。