2012-10-11 3 views
2

일반 목록이 포함 된 VB.NET (2010) 프로젝트가 있는데 목록에서 "비어있는"항목을 제거하는 방법을 찾으려고합니다. "비어있는"이라고 말하면 실제 문자가 포함되지 않은 항목을 의미합니다 (단, 공백이 있거나 공백이 전혀 없을 수도 있음).VB - 일반 목록에서 "비어있는"항목을 어떻게 제거합니까?

예를 들어, 내가 그 목록에 카운트를 한 경우에, 그것은 4 개 항목, 대신 예를 들어 7을 반환하도록 내가 필요

Dim MyList As New List(Of String) 

    MyList.Add("a") 
    MyList.Add("") 
    MyList.Add("b") 
    MyList.Add(" ") 
    MyList.Add("c") 
    MyList.Add("  ") 
    MyList.Add("d") 

...의이 내 목록입니다 가정 해 봅시다. ..

Dim ListCount As Integer = MyList.Count 
    MessageBox.Show(ListCount) ' Should show "4" 

뭔가 같은이 있다면 그것은 좋은 것입니다 ... 어쨌든

MyList.RemoveEmpty 

... 나는 구글을 검색했습니다 지난 몇 시간 동안 이것에 대한 해결책을 찾았지만, 지금까지 아무것도 할 수 없었습니다. 그래서 ... 어떤 아이디어?

나는이 프로젝트를 위해 .NET 2.0 프레임 워크를 타겟팅하고 있습니다.

미리 감사드립니다. 최소한 .NET 4를 사용하지 않는 경우

+0

나중에 "비어있는"항목을 보존해야합니까, 아니면 영구히 제거 하시겠습니까? – Blumer

+0

영구 제거하면 좋을 것입니다. – NotQuiteThereYet

답변

12

당신은 List.RemoveAll

MyList.RemoveAll(Function(str) String.IsNullOrWhiteSpace(str)) 

을 사용할 수 있습니다, 당신은 String.IsNullOrWhiteSpace을 사용할 수 없습니다. 그럼 당신은 방법을 직접 구현할 수 있습니다 1.1 이후가

Public Shared Function IsNullOrWhiteSpace(value As String) As Boolean 
    If value Is Nothing Then 
     Return True 
    End If 
    For i As Integer = 0 To value.Length - 1 
     If Not Char.IsWhiteSpace(value(i)) Then 
      Return False 
     End If 
    Next 
    Return True 
End Function 

Char.IsWhiteSpace있다.

+0

Gah가 조금 더 패배하고 VB.net을 찾아보아야했습니다. –

+0

코드 서체에서 List.RemoveAll을 사용하는 데 보너스 포인트가 있다고 생각합니다. – Blumer

+0

빠른 답장을 보내 주셔서 감사합니다. 하지만 그 줄을 프로그램에 붙여 넣을 때 다음과 같은 오류가 나타납니다 ... "IsNullOrWhiteSpace"는 String의 멤버가 아닙니다. 어떤 아이디어? – NotQuiteThereYet

관련 문제