VB.NET

2013-06-12 32 views
8

'da bir dizeyi bölme Aşağıdakileri iki dizeye ayırmaya çalışıyorum.VB.NET

"SERVER1.DOMAIN.COM Running" 

Bunun için kodu kullanıyorum.

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 

Bu iyi çalışır ve ben "SERVER1.DOMAIN.COM" ve "Running" iki mesaj kutusu olsun.

Yapmakta olduğum sorun, başlangıç ​​dizelerimin bir kısmının birden fazla alana sahip olmasıdır.

"SERVER1.DOMAIN.COM  Off" 

".COM" ve "Off" arasında yaklaşık sekiz boşluk vardır.

Bu dizeyi aynı şekilde nasıl ayırabilirim?

+3

'StringSplitOptions.RemoveEmptyEntries' kullanın. – Tim

cevap

7

deneyin bu

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

. "" ".ToCharArray()' yerine * karakterli bir dizi karakter dizisi kullanabilirsiniz: * 'strtemp.Split ({" "c}, StringSplitOptions.RemoveEmptyEntries)'. – Heinzi

2

kullanın bu şekilde:

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

İşte Regex sınıfını kullanarak bir yöntem var:

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 

Ve bunu yapmak için LINQ yolu:

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