我有一个包含多个空白行的文本文件,我试图返回其中两行之间的所有行
所以,如果我有一个看起来像这样的文件:
____________________________
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次换行之间。
我知道如何修剪字符并拉出奇异的线条,但我不知道如何修剪整个部分。
任何帮助都会受到赞赏,即使您只是指向我的教程。
提前致谢。
答案 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:"