2012-11-28 2 views
1

목록의 항목을 항목의 색인을 사용하여 문자열과 비교하려고합니다. 그러나 코드는 의도 한대로 수행하지 않습니다. 목록에서 다른 항목을 제거해야합니다. 여기 목록의 항목을 문자열과 비교 한 다음 다른 항목을 제거하십시오.

코드입니다 : 결과를 바탕으로

If (result.Count = 12) Then 
    If (result.item(2) = "US") Then 
     result.Remove(7) 
    End If 
    TextBox8.Text = result(11) 
Else 
    result.Remove(11) 
    TextBox8.Text = "" 
End If 

인덱스 (2) 단어 "미국"하지만 어떤 이유로 작동하지 않는 다른 항목이 제거되지 않습니다 있습니다. 어떤 제안?

+2

코드를 살펴 보셨습니까? 어딘가에 있기 때문에, 당신의 가정은 잘못되었습니다. 예를 들어 "US"가 아닌''US ''가 아닌가? 아니면 다른 경우입니까? 궁극적으로 우리는'result'의 실제 값을 보지 않고이 문제를 해결할 수 없을 것이기 때문에 "Check again ..."이라고 말하기를 제외하고는 대답 할 수 없습니다. –

+0

@ Dan Puzey 나는 그 번호를 디버깅했고 founf했습니다. (2)'result'는''US "'를 가지고 있습니다. 그래서 문제는 무엇입니까? – HShbib

+1

코드를 단계별로 실행하면'if' 문을 입력하고'result.Remove (7)'행 위로 이동합니까? 또한,'Result'의 타입은'List'입니까? 왜냐하면 그렇다면'result.RemoveAt (7)' –

답변

1

에서, Remove 방법은 목록에서 지정된 오브젝트를 제거 : 나는 당신의 명부가 같은 것입니다 상상. 따라서 Remove(7)에 전화하면 목록에서 일곱 번째 항목이 제거되지 않고 목록에서 번호 7이 제거됩니다. 나는 실제로하려고하는 것이 무엇인지 의심되는 것은 일곱 번째 요소를 제거하는 것입니다. 어떤 경우이든간에 어떤 경우에는 RemoveAt(7)을 호출하려고합니다.

1

나는 당신의 코드를 시도했다.

TextBox8.Text = 결과 (11) '인덱스가 범위를

당신이 12 개 항목 (0 ~ 11 지수)를 가지고 있기 때문에 논리적를 벗어났습니다 : 그래서 오류가 있습니다. 색인 번호 7을 제거합니다.
이제 11 개의 항목 (색인 0에서 10까지)이 있습니다. 당신은 11에서 값을 얻을 수 없습니다.
실제 제거가 완벽하게 작동합니다. 너의 문제는 무엇인가? 은 if의 두 번째 부분 :

Else 
     result.Remove(11) 
     TextBox8.Text = "" 
    End If 

작동하는 경우에만 result.count result.Count = 5는 (11)를 제거 할 수없는 경우 있기 때문에 문제가 <> 12 .
아마도 당신이 원하는 것을 말하기가 더 낫습니다.

*** PS. 댄 Puzey는 지적

Dim result As New List(Of String) 
    For i = 0 To 11 
     result.Insert(i, i.ToString) 
    Next 
    result(2) = "US" 
관련 문제