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

时间:2016-08-17 19:51:17

标签: vb.net

简单的编码器可能有一个简单的问题。

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

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

我遇到的问题是“是”可以在文本框中的任何位置,用户可以自由地在那里写任何单词/短语。

我的原始代码是;

If txtMsg.Contains(" yes ") Then
lstMsg.Items.Add("Good")    

不幸的是,上面的代码没有捕获是,如果它是唯一写的东西(即用户不包括它之前和之后的空格)或者它是短语末尾的最后一个单词(即“是”之后没有空格。

我遇到的一个关键问题是搜索“是”(没有空格)根据“昨天”这样的单词的代码提供成功的结果,即使这对我,用户来说是不可接受的。

任何提示?

2 个答案:

答案 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