如果该行包含一些字符串,则从文本文件中删除一行

时间:2011-10-21 21:40:42

标签: string vb6 text-files

在VB6中,我正在寻找一种方法,如果该行包含一些字符串,则从文本文件中删除一行文本。我主要用C#工作,我在这里不知所措。使用.NET有几种方法可以做到这一点,但我很幸运,他必须维护一些旧的VB代码。

有办法做到这一点吗?

由于

3 个答案:

答案 0 :(得分:5)

假设您在变量sFileName中有文件名:

Dim iFile as Integer
Dim sLine as String, sNewText as string

iFile = FreeFile

Open sFileName For Input As #iFile
Do While Not EOF(iFile)
  Line Input #iFile, sLine
  If sLine Like "*foo*" Then
    ' skip the line
  Else
    sNewText = sNewText & sLine & vbCrLf
  End If
Loop
Close

iFile = FreeFile
Open sFileName For Output As #iFile
Print #iFile, sNewText
Close

您可能希望输出到其他文件而不是覆盖源文件,但希望这会让您更接近。

答案 1 :(得分:4)

从某些角度来看,好的文本文件是一个复杂的野兽:你不能删除一行并向后移动更多的文本,它是一个流。

我建议您改为考虑输入到输出方法:

1)您以文本

打开输入文件

2)你打开第二个文件输出,一个临时文件。

3)你遍历文件A中的所有行。

4)如果当前行包含我们的字符串,请不要写它。如果当前行没有 包含我们的字符串,我们将其写在文件B中。

5)关闭文件A,关闭文件B.

现在您可以添加一些步骤。

6)删除文件A

7)将文件B移到先前文件A位置。

答案 2 :(得分:-3)

DeleteLine "C:\file.txt", "John Doe", 0,  
Function DeleteLine(strFile, strKey, LineNumber, CheckCase)

 'Use strFile = "c:\file.txt"   (Full path to text file)
 'Use strKey = "John Doe"       (Lines containing this text string to be deleted)

    Const ForReading = 1
    Const ForWriting = 2

    Dim objFSO, objFile, Count, strLine, strLineCase, strNewFile

    Set objFSO = CreateObject("Scripting.FileSystemObject")    
    Set objFile = objFSO.OpenTextFile(strFile, ForReading)

    Do Until objFile.AtEndOfStream
       strLine = objFile.Readline

       If CheckCase = 0 Then strLineCase = UCase(strLine): strKey = UCase(strKey)
       If LineNumber = objFile.Line - 1 Or LineNumber = 0 Then
          If InStr(strLine, strKey) Or InStr(strLineCase, strKey) Or strKey = "" Then
             strNewFile = strNewFile
          Else
             strNewFile = strNewFile & strLine & vbCrLf
          End If
       Else
          strNewFile = strNewFile & strLine & vbCrLf
       End If

    Loop
    objFile.Close

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(strFile, ForWriting)

    objFile.Write strNewFile 
    objFile.Close
 End Function