简单的编码器可能有一个简单的问题。
我有一个文本框(txtMsg),当我在其中键入内容(即“我很无聊”)并按下按钮(btnSubmit)时,它会在列表框中显示文本(lstMsg)。
我想检查当用户按下“提交”按钮作为我的代码的单独部分时,是否正在键入特定单词(“是”)。
我遇到的问题是“是”可以在文本框中的任何位置,用户可以自由地在那里写任何单词/短语。
我的原始代码是;
If txtMsg.Contains(" yes ") Then
lstMsg.Items.Add("Good")
不幸的是,上面的代码没有捕获是,如果它是唯一写的东西(即用户不包括它之前和之后的空格)或者它是短语末尾的最后一个单词(即“是”之后没有空格。
我遇到的一个关键问题是搜索“是”(没有空格)根据“昨天”这样的单词的代码提供成功的结果,即使这对我,用户来说是不可接受的。
任何提示?
答案 0 :(得分:0)
你不是在寻找"是的"所以你不应该用contains方法搜索它。您正在寻找"是"。
而是使用txtMsg.toLower.contains(" yes")并且if语句将执行,而不管之前或之后是什么"是"。它也会忽略大写(如果"是"包含大写字母)。
Dim contained as Boolean = False
Dim loc as integer = txtMsg.toLower.indexOf("yes")
If loc >= 0 Then
If loc > 0 And loc < txtMsg.length - 3 Then
If Not txtMsg.substring(loc - 1, loc).isAlpha And
Not txtMsg.substring(loc + 3, loc + 4).isAlpha Then
lstMsg.Items.Add("Good")
contained = true
End If
ElseIf loc > 0 Then
If Not txtMsg.substring(loc - 1, loc).isAlpha Then
lstMsg.Items.Add("Good")
contained = true
End If
Else
If Not txtMsg.substring(loc + 3, loc + 4).isAlpha Then
lstMsg.Items.Add("Good")
contained = true
End If
End If
ElseIf contained = False
'your code here
End If
没有正则表达式有点工作但是应该这样做。
答案 1 :(得分:0)
根据您的问题和评论,我可以理解,而不是使用列表框来搜索值并将其与“是”和“昨天”冲突,我会使用数组。说,试一试。
首先在Public Class Form1
Dim myList As List(Of String) = New List(Of String)
这将允许您从Form1
上的任何位置或您正在使用的当前表单命名的任何地方访问此阵列。
接下来将此添加到您执行的按钮命令(我使用Button1
)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If myList.Contains(TextBox1.Text.ToLower) Then
MessageBox.Show(String.Format("{0} already exists", TextBox1.Text))
TextBox1.Clear()
Else
myList.Add(TextBox1.Text)
ListBox1.Items.Add(TextBox1.Text)
End If
End Sub
完成所有这些操作后,您的页面应如下所示
Public Class Form1
Dim myList As List(Of String) = New List(Of String)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If myList.Contains(TextBox1.Text.ToLower) Then
MessageBox.Show(String.Format("{0} already exists", TextBox1.Text))
TextBox1.Clear()
Else
myList.Add(TextBox1.Text)
ListBox1.Items.Add(TextBox1.Text)
End If
End Sub
End Class