我试图找出mylines()是否包含值。我可以通过mylines获取值。包含方法:
Dim mylines() As String = IO.File.ReadAllLines(mypath)
If mylines.Contains("food") Then
MsgBox("Value Exist")
End If
但问题是我想检查mylines()是否包含以my值开头的行。我可以通过mylines(0).StartsWith方法从单行获取此值。但是如何从所有行中找到一个从某个值开始的字符串,例如“mysearch”,然后得到那个行号?
我使用for
循环来执行此操作,但速度很慢。
For Each line In mylines
If line.StartsWith("food") Then MsgBox(line)
Next
请限制.NET 2.0的代码。
答案 0 :(得分:1)
我不是VB人,但我认为你可以使用Linq:
Dim mylines() As String = IO.File.ReadAllLines(mypath)
??? = mylines.Where(Function(s) s.StartWith("food")) //not sure of the return type
答案 1 :(得分:1)
这是使用Framework 2.0代码的一种方法,只需使用您要搜索的字符串设置SearchString:
Imports System.IO
Public Class Form1
Dim SearchString As String = ""
Dim Test() As String = File.ReadAllLines("Test.txt")
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
SearchString = "Food"
End Sub
Private Function StartsWith(s As String) As Boolean
Return s.StartsWith(SearchString)
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim SubTest() As String = Array.FindAll(Test, AddressOf StartsWith)
ListBox1.Items.AddRange(SubTest)
End Sub
End Class
当我用一个包含87,000行的文件测试时,大约需要0.5秒,以填充列表框。