0

我有一个 VB.NET 表单,用户可以从 40 个不同的值中进行选择。我希望使用一个文本框来验证用户给出的搅拌是否是这 40 个单词中的一个值,而不是一个包含所有 40 个值的保管箱。

因此,例如,我需要用户写一些东西并验证字符串是 40 个保留字之一,例如“urgent”、“post”……也许这些字存储在一个数组中,然后比较用户写的内容?

TextBox1.Text.Contains("urgent")
TextBox1.Text.Contains("post")
TextBox1.Text.Contains("standard")
TextBox1.Text.Contains("stay")

也许是一种方法

Public Function Contains(ByVal value As String) As Boolean   
    Return (   TextBox1.Text(value, ...) >= 0)
End Function 

最好的方法是什么?

4

2 回答 2

1

您可以使用 Contains 方法创建保留字的 List(of String),以使用类似的 Contains 函数检查键入的内容是否是其中之一。我不确定您要解析的文本有多大,所以我将其拆分为单个单词。

Public Class Form1
    Dim reservedWords As List(Of String) = New List(Of String)({"urgent", "post", "standard", "stay"})

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        Dim text As String = CType(sender, TextBox).Text
        If ContainsReservedWord(text) Then Beep()
    End Sub

    Public Function ContainsReservedWord(value As String) As Boolean
        Dim x As Integer
        Dim stringSplit As String() = value.Split
        If stringSplit.Count > 0 Then
            For x = 0 To stringSplit.Count - 1
                If reservedWords.Contains(LCase(stringSplit(x))) Then  Return True
            Next
        End If
        Return False
    End Function

End Class
于 2012-10-17T02:49:49.270 回答
0

使用下面的代码来验证是否属于保留字的字符串。

var lstReservedWords = new List<string> {"urgent", "post", "standard", "stay", .......};
bool isReservedWord = lstReservedWords.Any(r => String.Compare(r, TextBox1.Text, true) == 0);

希望这可以帮助。

于 2012-10-17T02:47:53.323 回答