2013-04-25 3 views
-1

이 스크립트를 사용하여 입력란의 사용자 입력을 올바른 단어 22 개와 비교하려고합니다. 나는 복수형을 찾고 있지 않다. VICEADVICE이므로 2 값이된다. 문자열 값이 같음 값 만 받아들이도록하고 싶습니다.배열의 문자열과 문자열 비교

현재로서는 처음 단어 TIED 만 인식하고 "찾음"메시지 상자를 표시하지만 목록의 다른 단어는 인식하지 못합니다.

나는 시각적 기본 스크립트

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 
+1

당신은 당신이 언어를 언급 할 수 있습니다 'visual-studio'는 언어가 아닙니다. – Yakk

+0

VB는 약간 녹슬었지만 중괄호 대신 괄호를 사용 하시겠습니까? – Melanie

+0

'같은 값을 받아들이는 문자열 값을 갖기를 원합니다. '같은 값은'VICE' ='Vice'를 의미하지 않습니다. –

답변

1

같은 루프 뭔가를을 사용합니다.

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") 

이는 모든 항목경우 목록에서 "잘못된 단어를"표시됩니다 : 당신은 당신이 당신의 루프 하나를 찾는없이 완료 경우 일치하는, 그래서 대신 같은 것을 시도하지 말라 알고있다 첫 번째 테스트를 실패하십시오.

+0

대단히 감사합니다. – ReCeSSiVE

0

STRCOMP에 쓰고 있어요? 정확한 일치를 원한다면 왜 직접적인 비교가되지 않습니까?

For Each Str As String In StrCorrect 
     If Str = Find Then 
      MessageBox.Show("Found :" & Str) 
     End If 
    Next 
+0

매우 유용 합니다만 질문에서 언급 된 문제를 해결하지 못합니다 : "그것은 단지 첫 번째 단어 "TIED"를 인식한다. 또한'= '를 사용하는 것은 문화 및 대소 문자 구분 옵션을 생략 할 수 있다는 점에 유의해야한다. 일반적으로 이러한 작업을 위해'string' 클래스의 메서드를 사용하는 것이 더 좋습니다. –

+0

'ADVICE'가 아닌 정확히 일치하는 문자열을 인식해야합니다. '문자열 값이 같은 값만 받아들이도록하고 싶습니다.'라는 질문에서 이것을 참조하십시오. –

0

나는 문제는 첫 번째 항목이 일치하지 않은 경우 루프가 명시 적으로 반환하는 것입니다

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 
+0

이것은 문제의 결과를 전혀 변경하지 않습니다. –

+0

루프를 통해 전체 배열, 잘못된 단어를 나타내는 MsgBox는 경고하는 중입니다 ... 일단 올바른 단어를 찾으면 중지됩니다 ... – tymeJV

0

그것은 당신을 도울 것입니다, 아래와 같이 시도 ...

샘플 :

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 
관련 문제