-1

テキストボックスの値がテキストファイルの各行の最初の値のいずれかに一致する場合にラベルを表示するコーディングがあります。

Dim sList As New List(Of String)(IO.File.ReadAllLines("Path"))
    Dim i As Integer
    For i = 0 To sList.Count - 1
        If sList(i).StartsWith(textbox1.Text) Then
            Label1.Visible = True
            Exit For
        Else
            Label1.Visible = False
        End If
    Next

問題は、テキスト ボックスに 1 があり、テキスト ファイルに 11 がある場合にラベルが表示されることです。これを回避する最善の方法は何でしょうか?

sList(i).Contains などを試しましたが、どれもうまくいきません。

ここですべての提案を試しましたが、何も機能しません。テキストファイルには次のような番号があります

11
15
18

たとえば、テキストボックスに番号 1 がある場合、ラベルが表示されます。

4

4 に答える 4

1

これを試して:

Label1.Visible = IO.File.ReadAllLines("Path.txt").Any(Function(f) f = TextBox1.Text)
于 2012-05-30T20:48:45.857 に答える
0

次の行を変更してみてください。テキスト ファイルから読み取り、行全体の正確な一致を探していると仮定して、これを試すことができます。

If sList(i).StartsWith(textbox1.Text + Environment.NewLine) Then

現在、新しい行を探しており、「11」と一致しないため、その行の唯一のものであることを確認する必要があります

于 2012-05-30T19:05:43.700 に答える
0

ここでLINQを使用できると思います:

Dim text = textbox1.Text
Dim textWithSpace = String.Format("{0} ", text)

Label1.Visible = IO.File.ReadAllLines("Path").Any(Function(line) line.StartsWith(textWithSpace) OrElse line = text)

機能させるにはインポートが必要ですSystem.Linq

ファイル内の各単語はスペースで終わると想定しました。

于 2012-05-30T19:04:57.000 に答える
0

行の少なくとも 1 つが のテキストで始まる場合にラベルを表示する場合は、TextBoxLINQ と を使用できますEnumerable.Any

Dim matchingLines = From l In IO.File.ReadLines("Path")
                    Where l.StartsWith(textbox1.Text)
Label1.Visible = matchingLines.Any()
于 2012-05-30T19:05:00.840 に答える