如何删除文本文件中的多个空行

How do I remove multiple empty lines in a text file

不知是否有人能够提供帮助。我有一个包含多行格式化文本的 m3u 文件。

#EXTM3U
#RADIOBROWSERUUID:963194ef-0601-11e8-ae97-52543be04c81
#EXTINF:1,80s80s Christmas
http://streams.80s80s.de/christmas/mp3-192/streams.80s80s.de/

#RADIOBROWSERUUID:9638cfa5-0601-11e8-ae97-52543be04c81
#EXTINF:1,181.FM - Christmas Kountry
http://www.181.fm/stream/pls/181-xkkountry.pls

虽然我已经设法将数据提取为我可能需要的格式...但我留下了多个空白行。我用来提取数据的示例代码是...

                If line.StartsWith("#EXTM3U") Then 'Remove
                    lines(i) = ""
                End If
                If line.StartsWith("#RADIOBROWSERUUID:") Then 'Remove
                    lines(i) = ""
                End If
                If line.StartsWith("#EXTINF:1,") Then 'Add # at beginning of line
                    lines(i) = line.Replace("#EXTINF:1,", "#") 
                End If

然后我得到以下...

#80s80s Christmas
@http://streams.80s80s.de/christmas/mp3-192/streams.80s80s.de/


#181.FM - Christmas Kountry
@http://www.181.fm/stream/pls/181-xkkountry.pls

我似乎无法删除 empty/blank 行。我已经使用 google 以及此处,但没有一个答案似乎对我有用。这是我正在使用的代码...

Dim Newlines As String() = File.ReadAllLines(ofd.FileName)

For t As Integer = 0 To Newlines.Length - 1
Dim line2 As String = Newlines(t)
If line2.StartsWith("") Then ' Remove blank lines
Beep()
Newlines(t) = line2.Replace(Environment.NewLine, String.Empty)  
End If
Next

File.WriteAllLines("NewTextm3u.txt", lines)

任何人都可以看到我哪里出错了吗?非常感谢。

你可以这样做:

   Dim sFile As String = "c:\test2\test2.txt"

    Dim Fdata As New List(Of String)

    Fdata = File.ReadAllLines("c:\test2\test.txt").ToList

    For i = Fdata.Count - 1 To 0 Step -1
        If Fdata(i) = "" Then
            Fdata.RemoveAt(i)
        End If
    Next

    For Each sLine As String In Fdata
        Debug.Print(sLine)
    Next

    File.WriteAllLines(sFile)

以上将删除所有空行

代替该循环,您还可以使用像这样的 lamda 表达式:

    Fdata.RemoveAll(Function(MyOneRow) MyOneRow = "")

正如您在上图中所看到的,在句子的末尾有一个我们可以称之为“enter”的东西,在中间还有一个。 因此,让我们删除句子之间的那一行,因为它只是一行,您可以这样做:

If line(i) = CHR(13) & CHR(10) then line(i)=""

但是如果你有点偏执,只想删除所有的“输入”或“换行符”,就这样做吧:

 line(i)=Replace(line(i),CHR(13) & CHR(10),"")

我使用 StrignSplitOptions.RemoveEmptyEntries 去除空行。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim FileContents = File.ReadAllText("SomeFile.txt")
    Dim lines = FileContents.Split(Environment.NewLine.ToCharArray, StringSplitOptions.RemoveEmptyEntries)
End Sub