2014-05-20 76 views
2

我想使用VB.Net删除一些文本的特定行。我看到一个解决方案here但是它在VB6中。问题是,我不太熟悉VB6。有人能帮助我吗? 这是从链接代码:使用vb.net删除文本文件中的特定行

Public Function DeleteLine(ByVal fName As String, ByVal LineNumber As Long) _As Boolean 
    'Purpose: Deletes a Line from a text file 

    'Parameters: fName = FullPath to File 
    '   LineNumber = LineToDelete 

    'Returns: True if Successful, false otherwise 

    'Requires: Reference to Microsoft Scripting Runtime 

    'Example: DeleteLine("C:\Myfile.txt", 3) 
    '   Deletes third line of Myfile.txt 
    '______________________________________________________________ 


    Dim oFSO As New FileSystemObject 
    Dim oFSTR As Scripting.TextStream 
    Dim ret As Long 
    Dim lCtr As Long 
    Dim sTemp As String, sLine As String 
    Dim bLineFound As Boolean 

    On Error GoTo ErrorHandler 
    If oFSO.FileExists(fName) Then 
     oFSTR = oFSO.OpenTextFile(fName) 
     lCtr = 1 
     Do While Not oFSTR.AtEndOfStream 
      sLine = oFSTR.ReadLine 
      If lCtr <> LineNumber Then 
       sTemp = sTemp & sLine & vbCrLf 
      Else 
       bLineFound = True 

      End If 
      lCtr = lCtr + 1 
     Loop 

     oFSTR.Close() 
     oFSTR = oFSO.CreateTextFile(fName, True) 
     oFSTR.Write(sTemp) 

     DeleteLine = bLineFound 
    End If 


ErrorHandler: 
    On Error Resume Next 
    oFSTR.Close() 
    oFSTR = Nothing 
    oFSO = Nothing 

End Function 
+0

如何大是包含要删除的行的文件? – Steve

+0

大约1KB到2KB。 – svynsaenz

+0

然后从@大卫的回答下面是最好的一个 – Steve

回答

5
Dim delLine As Integer = 10 
Dim lines As List(Of String) = System.IO.File.ReadAllLines("infile.txt").ToList 
lines.RemoveAt(delLine - 1) ' index starts at 0 
System.IO.File.WriteAllLines("outfile.txt", lines) 
+0

谢谢!我只需要为代码添加一个'For'循环。 – svynsaenz

0

或者您可以使用

TEXTFILE = TextFile.Replace( “你想删除”, “”)

+1

这会留在你的文件中的空行。您需要删除整个行,包括换行符。 – HuH

+0

然后它会'TEXTFILE = TextFile.Replace( “你想删除”,vbNewLine,B,1,将b.length - 1)',在此之前加上'昏暗b以字符串()=斯普利特(TextBox1.Text ,vbNewLine)'。没有测试它,但它应该工作,它用-1行代替每个“你想删除”。 –

1
'This can also be the file that you read in 
    Dim str As String = "sdfkvjdfkjv" & vbCrLf & "dfsgkjhdfj" & vbCrLf & "dfkjbhhjsdbvcsdhjbvdhs" & vbCrLf & "dfksbvashjcvhjbc" 

    Dim str2() As String = str.Split(vbCrLf) 

    For Each s In str2 
     If s.Contains("YourString") Then 
      'add your line to txtbox 
     Else 
      'don't add your line to txtbox 
     End If 
    Next 
+0

这帮了我,谢谢! <3 –

相关问题