2013-06-12 18 views
8

Próbuję podzielić następujące na dwa ciągi.Podziel ciąg w VB.NET

"SERVER1.DOMAIN.COM Running" 

Do tego używam kodu.

Dim Str As String = "SERVER1.DOMAIN.COM Running" 
Dim strarr() As String 
strarr = Str.Split(" ") 
For Each s As String In strarr 
    MsgBox(s) 
Next 

Działa to dobrze, a ja dostać dwa pudełka wiadomość z "SERVER1.DOMAIN.COM" i "Running".

Problem, który mam, polega na tym, że niektóre z moich początkowych ciągów mają więcej niż jedną spację.

"SERVER1.DOMAIN.COM  Off" 

Pomiędzy znakami ".COM" i "Off" znajduje się około ośmiu spacji.

Jak mogę oddzielić ten ciąg w taki sam sposób?

+3

Użyj 'StringSplitOptions.RemoveEmptyEntries'. – Tim

Odpowiedz

7

Spróbuj

Dim array As String() = strtemp.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) 
+3

Zamiast '" ".ToCharArray()' możesz po prostu użyć tablicy * literałów znaków *: 'strtemp.Split ({" "c}, StringSplitOptions.RemoveEmptyEntries)". – Heinzi

2

Wykorzystanie w ten sposób:

Dim line As String = "SERVER1.DOMAIN.COM Running" 
Dim separators() As String = {"Domain:", "Mode:"} 
Dim result() As String 
result = line.Split(separators, StringSplitOptions.RemoveEmptyEntries) 
1

Oto metoda przy użyciu regex Klasa:

Dim str() = {"SERVER1.DOMAIN.COM Running", "mydomainabc.es  not-running"} 
    For Each s In str 
     Dim regx = New Regex(" +") 
     Dim splitString = regx.Split(s) 
     Console.WriteLine("Part 1:{0} | Part 2:{1}", splitString(0), splitString(1)) 
    Next 

i sposób LINQ to zrobić:

Dim str() = {"SERVER1.DOMAIN.COM Running", "mydomainabc.es  not-running"} 
    For Each splitString In From s In str Let regx = New Regex(" +") Select regx.Split(s) 
     Console.WriteLine("Part 1:{0} | Part 2:{1}", splitString(0), splitString(1)) 
    Next