从VB.NET中的字符串()列表中搜索

从VB.NET中的字符串()列表中搜索,vb.net,string,find,.net-2.0,Vb.net,String,Find,.net 2.0,我正在尝试查找mylines()是否包含值。我可以通过mylines获取值。包含方法: Dim mylines() As String = IO.File.ReadAllLines(mypath) If mylines.Contains("food") Then MsgBox("Value Exist") End If 但问题是我想检查mylines()是否包含以我的值开头的行。我可以通过mylines(0)从一行中获取该值。但是我如何从所有行中找到一个字符串,它从某个值开始,例如“m

我正在尝试查找mylines()是否包含值。我可以通过mylines获取值。包含方法:

Dim mylines() As String = IO.File.ReadAllLines(mypath)
If mylines.Contains("food") Then
    MsgBox("Value Exist")
End If
但问题是我想检查mylines()是否包含以我的值开头的行。我可以通过mylines(0)从一行中获取该值。但是我如何从所有行中找到一个字符串,它从某个值开始,例如“mysearch”,然后得到该行号呢

我正在使用
for
循环来执行此操作,但速度很慢

For Each line In mylines
    If line.StartsWith("food") Then MsgBox(line)
Next

请限制为.NET 2.0编写代码。

我不是VB迷,但我认为您可以使用Linq:

Dim mylines() As String = IO.File.ReadAllLines(mypath)
??? = mylines.Where(Function(s) s.StartWith("food")) //not sure of the return type

签出:

使用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

当我用一个有87000行的文件来测试它时,填充列表框大约需要.5秒。

你有多少行是慢的?不靠近编译器,但我相信
myline。IndexOf(line)+1
将给出包含匹配字符串的行的行号。目前是87000行,但是随着时间的推移会增加。mylines.IndexOf(line)+1,对不起,我听不懂。如果有任何活生生的例子?您是否在寻求一种方法来获取以搜索字符串开头的所有行?谢谢您的帮助,但它几乎与我使用的/。在相同的速度问题中,或者您认为代码是相同的?您是否因为其他原因必须全部阅读,或者您是否可以扫描入站?也许永远不要把它全部拉出来是最好的?我忘了提到我在.net framework 2.0中工作,2.0 framework不完全支持linq,我认为string()函数不支持linq。它比我现在做的慢。好吧,别管了