VB中如何判断文本框输入字符串是否存在于指定数组中?
解决方案:VB.NET数组无法调用
Contains方法的问题 这问题我太熟悉了!在VB.NET里,普通的数组本身并没有内置的Contains实例方法,这就是你收到'contains' is not a member of form1.words错误的核心原因。下面给你几个简单好用的解决办法,挑适合你的就行:
方法1:使用LINQ扩展方法
LINQ为数组提供了Contains扩展方法,但需要先导入System.Linq命名空间。步骤如下:
- 在代码文件的最顶部添加导入语句:
Imports System.Linq
- 修改你的判断代码(记得先把TextBox的内容赋值给
answer):
Dim answer As String = TextBox1.Text ' 补充获取用户输入的代码 If Words.Contains(answer) Then MessageBox.Show("you got it") End If
如果需要忽略大小写匹配,可以改成:
If Words.Contains(answer, StringComparer.OrdinalIgnoreCase) Then MessageBox.Show("you got it") End If
方法2:将数组转换为List(Of String)
List集合本身就内置了Contains方法,你可以先把数组转成List再进行判断:
Dim answer As String = TextBox1.Text Dim wordList As New List(Of String)(Words) ' 将数组转为List If wordList.Contains(answer) Then MessageBox.Show("you got it") End If
同样,忽略大小写的话可以用:
If wordList.Contains(answer, StringComparer.OrdinalIgnoreCase) Then MessageBox.Show("you got it") End If
方法3:使用Array.Exists方法
这个方法不需要额外导入命名空间,直接利用Array类的静态方法来判断:
Dim answer As String = TextBox1.Text If Array.Exists(Words, Function(word) word.Equals(answer)) Then MessageBox.Show("you got it") End If
忽略大小写的写法:
If Array.Exists(Words, Function(word) word.Equals(answer, StringComparison.OrdinalIgnoreCase)) Then MessageBox.Show("you got it") End If
小提醒
别忘了确保Words数组已经正确从文本文件加载了数据,而且answer变量确实获取到了TextBox里的用户输入哦!
内容的提问来源于stack exchange,提问作者Daniel Dee
相关产品推荐
相关产品推荐

