将字符串与数组中的字符串进行比较
我试图使用此脚本将来自文本框的用户输入与22个正确的单词进行比较。我不是在寻找多个案例,例如VICE
在ADVICE
,所以它会是2个值; 我希望它的字符串值只接受相等的值。将字符串与数组中的字符串进行比较
目前,它只识别第一个单词TIED
并显示一个消息框“found”,但它不会识别列表中的任何其他单词。
我在Visual Basic脚本
Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
Dim StrCorrect() As String = {"TIED", "VICE", "ICED", "DIVE", "DIET", "DATE", "CITE", "CAVE", "AIDE", "ACED", "CITED", "ACTED", "VACATE", "CATTIE", "ADVICE", "AVIATE", "ACTIVE", "VACATED", "DICTATE", "AVIATED", "ACTIVATE", "ACTIVATED"}
Dim Find As String = userinput
For Each Str As String In StrCorrect
If StrComp(Str, userinput, CompareMethod.Text).ToString = 0 Then
MsgBox("Found" & userinput)
Return
Else : MsgBox("incorrect word")
Return
End If
Next
End Sub
的问题是,你的循环被明确地返回,如果第一项不匹配。你只知道你没有一个匹配,如果你的循环没有找到一个完成,所以尝试这样的事情,而不是:
For Each Str As String In StrCorrect
If StrComp(Str, userinput, CompareMethod.Text).ToString = 0 Then
MsgBox("Found" & userinput)
Return
End If
Next
MsgBox("incorrect word")
这将只显示“不正确的字:”如果项目的所有您的列表第一次测试失败。
谢谢你,这个答案做到了! – ReCeSSiVE 2013-04-25 15:52:41
为什么STRCOMP
写?为什么不直接比较,如果你想精确匹配?
For Each Str As String In StrCorrect
If Str = Find Then
MessageBox.Show("Found :" & Str)
End If
Next
非常有用,但不能解决问题中提到的问题:“它只是认识到第一个单词“TIED”,同样值得注意的是,使用'='省略了可能需要的任何文化和区分大小写选项 - 对于这些操作使用'string'类的方法通常是更好的做法 – 2013-04-25 15:45:22
它只是应该识别精确匹配而不是'ADVICE'从问题中看到这个'我希望它的字符串值只接受相等的值。' – 2013-04-25 15:45:57
我会用一个for循环,像
For i As Integer = 0 To StrCorrect.Length - 1
If StrCorrect(i) = Find Then
MsgBox("Found" & Find)
Return
'End if
'The else statement simply alerting that it didnt find the right word on this iteration
'The else can be removed if you dont want this alert
Else
MsgBox("incorrect word")
'Return
End If
Next
这根本不会改变问题的结果 – 2013-04-25 15:46:50
它循环遍历ENTIRE数组,MsgBox表示不正确的单词只是提醒...一旦它找到合适的单词就会停止... – tymeJV 2013-04-25 15:47:56
尝试像下面,它会帮助你...
样品:
Dim result As String() = Array.FindAll(StrCorrect, Function(s) s.Equals(Find))
If (result.Length > 0) Then
MsgBox("Found : " & userinput)
Else
MsgBox("incorrect word")
End If
全码:
Dim StrCorrect() As String = {"TIED", "VICE", "ICED", "DIVE", "DIET", "DATE", "CITE", "CAVE", "AIDE", "ACED", "CITED", "ACTED", "VACATE", "CATTIE", "ADVICE", "AVIATE", "ACTIVE", "VACATED", "DICTATE", "AVIATED", "ACTIVATE", "ACTIVATED"}
Dim Find As String = userinput
Dim result As String() = Array.FindAll(StrCorrect, Function(s) s.Equals(Find))
If (result.Length > 0) Then
MsgBox("Found : " & userinput)
Else
MsgBox("incorrect word")
End If
您可能要更何况你是语言写这个。'visual-studio'不是一种语言。 – Yakk 2013-04-25 15:29:33
我的VB有点生疏,但是你不想用圆括号代替大括号吗? – Melanie 2013-04-25 15:38:21
'我希望它的字符串值只接受相等的值.'相等的值并不意味着'VICE' ='Vice' – 2013-04-25 16:05:09