在VB.Net中搜索特定字符串

在VB.Net中搜索特定字符串,vb.net,Vb.net,简单的程序员,可能有一个简单的问题 我有一个文本框(txtMsg),当我在其中键入内容(即“我很无聊”)并按下按钮(btnSubmit)时,它会在列表框(lstMsg)中显示文本 我想检查当用户按提交按钮作为我代码的一个单独部分时,是否正在键入特定的单词(“是”) 我的问题是“是”可以在文本框中的任何位置,用户可以在其中自由书写任何单词/短语 我最初的代码是 If txtMsg.Contains(" yes ") Then lstMsg.Items.Add("Good") 不幸的是,如

简单的程序员,可能有一个简单的问题

我有一个文本框(txtMsg),当我在其中键入内容(即“我很无聊”)并按下按钮(btnSubmit)时,它会在列表框(lstMsg)中显示文本

我想检查当用户按提交按钮作为我代码的一个单独部分时,是否正在键入特定的单词(“是”)

我的问题是“是”可以在文本框中的任何位置,用户可以在其中自由书写任何单词/短语

我最初的代码是

If txtMsg.Contains(" yes ") Then
lstMsg.Items.Add("Good")    
不幸的是,如果上面的代码是唯一编写的内容(即用户没有在其前后加空格),或者它是短语末尾的最后一个单词(即“是”后面没有空格),那么上面的代码不会捕获到是

我遇到的一个关键问题是,根据诸如“昨天”之类的单词的代码,在“是”(不带空格)上搜索可以获得成功的结果,尽管这对我这个用户来说是不可接受的

有什么提示吗?

您不是在寻找“是”,所以不应该使用contains方法来搜索它。你在寻找“是的”

相反,使用txtMsg.toLower.contains(“yes”),if语句将执行,而不管“yes”之前或之后是什么。它还将忽略大写字母(如果“是”包含大写字母)

Dim包含为布尔值=False
Dim loc as integer=txtmg.toLower.indexOf(“是”)
如果loc>=0,则
如果loc>0且loc0,则
如果不是txtmg.substring(loc-1,loc).isAlpha,那么
lstMsg.Items.Add(“好”)
包含=真
如果结束
其他的
如果不是txtMsg.substring(loc+3,loc+4)。那么
lstMsg.Items.Add(“好”)
包含=真
如果结束
如果结束
ElseIf contained=False
'您的代码在这里
如果结束

没有正则表达式需要做一些工作,但这应该可以做到。

根据我从您的问题和评论中了解到的,我会使用数组,而不是使用列表框来搜索值并使其与“yes”和“昨天”冲突。
因此,试试看。

首先在
公共类Form1下声明此权限

Dim myList As List(Of String) = New List(Of String)
这将允许您从
Form1
上的任何位置访问此数组,或者从您为当前表单命名的任何位置访问此数组。

接下来将此添加到执行命令的按钮(我使用了
按钮1

完成所有这些操作后,您的页面应该如下所示

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

你知道如何使用正则表达式吗?我正在自学,所以我的理解肯定比你低:)如果Regex.IsMatch(txtMsg,“\byes\b”)那么…
呢?
\b
部分在单词边界上匹配,因此匹配整个单词“yes”,但不匹配“昨天”等。根据是否找到“yes”,我希望发生两个事件。如果找到yes,则执行事件1-如果没有找到yes,则执行事件2,因此在这种情况下,我仍然需要If语句?最后感谢您指出,但是txtmsg的内容已经从我的解决方案中的早期编码中小写了,我在这篇文章中没有提到-但是感谢您承认并帮助这一事实:)只要添加一个else语句,如果if测试返回false,执行else语句中的代码,而不是if语句中的代码。我已经发布了对我的代码的编辑。谢谢卢克。我确实尝试过这个,但这里的问题是“昨天”(作为一个例子)这个短语会出现一个成功的IF,因为这个词中存在“是”。这一特殊因素一直是我最担心的。有什么建议吗?好的,我又修改了代码。您的代码“lstMsg.Items.Add(“Good”)”仅在找到“yes”时执行,并且“yes”之前和之后的字符不是字母表中的字母。这应该可以避免像“昨天”这样的词的问题。
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