2013-06-12 23 views
8

以下を2つの文字列に分割しようとしています。VB.NETで文字列を分割する

"SERVER1.DOMAIN.COM Running" 

これはコードを使用しています。

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 

これは正常に動作し、私は"SERVER1.DOMAIN.COM""Running"で2つのメッセージボックスを取得します。

私の問題は、初期の文字列の中に複数のスペースがあることです。

"SERVER1.DOMAIN.COM  Off" 

「.COM」と「オフ」の間には約8スペースがあります。

この文字列を同じ方法で分割するにはどうすればよいですか?

+3

'StringSplitOptions.RemoveEmptyEntries'を使用してください。 – Tim

答えて

7

この

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

'' ".ToCharArray()'の代わりに*文字リテラルの配列*: 'strtemp.Split({" "c}、StringSplitOptions.RemoveEmptyEntries)'を使うことができます。 – Heinzi

2

使用この方法:

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

を試してみてくださいここでの正規表現クラスを使用する方法です。

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 

そして、それを行うにはLINQの方法:

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