空行后修剪文件

时间:2012-01-04 23:55:21

标签: vb.net visual-studio visual-studio-2010 readline

我有一个包含多个空白行的文本文件,我试图返回其中两行之间的所有行

所以,如果我有一个看起来像这样的文件:

 ____________________________
 1########################
 2##########################
 3
 4########################
 5##########################
 6#######################
 7
 8#########################
 9##########################
 10#######################
 11####################
 12########################
 13#########################
 14
 15##########################
 ----------------------------

我想抓住第8-13行。不幸的是,它可能并不总是8-13,因为它可能是9-20或7-8,但它总是在第2和第3次换行之间。

我知道如何修剪字符并拉出奇异的线条,但我不知道如何修剪整个部分。

任何帮助都会受到赞赏,即使您只是指向我的教程。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这里的基本思路是将整个事物作为字符串,在双折线分割时将其分成组,然后引用您想要的组(在您的情况下,第三个)。

Dim value As String = File.ReadAllText("C:\test.txt")

Dim breakString As String = Environment.NewLine & Environment.NewLine

Dim groups As String() = value.Split({breakString}, StringSplitOptions.None)

Dim desiredString As String = groups(2)

MsgBox(desiredString)

修改 回答您评论中的问题 -

Environment.NewLine是一种更加动态的指定换行符的方式。假设您在Windows上运行 - 您也可以使用VbCrLf。我们的想法是,如果你要在Linux上编译相同的代码,那么Environment.NewLine会生成一个Lf。您可以在此处查看更多信息:http://en.wikipedia.org/wiki/Newline

我使用Environment.NewLine & Environment.NewLine的原因是因为您希望在有两个换行符的情况下断开您的信息(一个在段落的最后一行的末尾,一个用于下一个段落之前的空白行)

答案 1 :(得分:0)

我最终做的是修剪最后一部分并在第一部分中搜索我需要的内容(我知道我没有在问题中包含搜索部分,但我只想找到一种方法来缩小范围。搜索结果,因为它会有重复的结果)。我发布此信息,任何其他人都会发现这一点,并寻找答案。

Dim applist() = System.IO.File.ReadAllLines("C:\applist.txt")
Dim findICSName As String = "pid"
Dim ICSName As New Regex("\:.*?\(")
Dim x = 0
    Do Until applist(x).Contains("Total PSS by OOM adjustment:")
        If applist(x).Contains(findICSName) Then
            app = ICSName.Match(applist(x)).Value
            app = app.TrimStart(CChar(": "))
            app = app.TrimEnd(CChar("("))
            ListBox1.Items.Add(app)
        End If
        x = x + 1
    Loop
End If

这是如何工作的,它查看正则表达式的每一行,直到它到达断点中的第一个单词"通过OOM调整的总PSS:"