web-dev-qa-db-fra.com

Fractionner une chaîne dans VB.NET

J'essaie de diviser ce qui suit en deux chaînes.

"SERVER1.DOMAIN.COM Running"

Pour cela, j'utilise le code.

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

Cela fonctionne très bien et j'obtiens deux boîtes de message avec "SERVER1.DOMAIN.COM" et "Running".

Le problème que j'ai est que certaines de mes chaînes initiales ont plus d'un espace.

"SERVER1.DOMAIN.COM        Off"

Il y a environ huit espaces entre ".COM" et "Off".

Comment puis-je séparer cette chaîne de la même manière?

10
Matt Leyland

Essaye ça

Dim array As String() = strtemp.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
16
Sachin

Utilisez de cette façon:

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

Voici une méthode utilisant la 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

Et la manière LINQ de le faire:

    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
1
bbqchickenrobot