2013-06-12 22 views
8

Sto provando a dividere il seguente in due stringhe.Dividere una stringa in VB.NET

"SERVER1.DOMAIN.COM Running" 

Per questo uso il codice.

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 

Questo funziona bene, e ottengo due finestre di messaggio con "SERVER1.DOMAIN.COM" e "Running".

Il problema che sto avendo è che alcune delle mie stringhe iniziali hanno più di uno spazio.

"SERVER1.DOMAIN.COM  Off" 

Ci sono circa otto spazi tra ".COM" e "Off".

Come posso separare questa stringa nello stesso modo?

+3

Utilizzare 'StringSplitOptions.RemoveEmptyEntries'. – Tim

risposta

7

Prova questa

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

Invece di "" ".ToCharArray()' puoi semplicemente usare un array di caratteri letterali * *: 'strtemp.Split ({" "c}, StringSplitOptions.RemoveEmptyEntries)'. – Heinzi

2

Utilizzare questo modo:

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

Ecco un metodo che utilizza classe Regex:

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 

E il modo LINQ per farlo:

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 
Problemi correlati