2016-05-18 22 views
0

最初のバックスラッシュと2番目のバックスラッシュの間のテキストの値を取得しようとしていますが、VB.net最初のスラッシュと2番目のスラッシュの間でテキストを取得しようとしています

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim TEST As String = "ONE\TWO\TRHREE\FOR\FIVE" 
    Dim splitted = TEST.Split("\"c) 
    Dim values = splitted.Skip(1).Take(splitted.Length - 2).ToArray() 
    MsgBox(values) 
End Sub 
+0

ですから、結果として 'Two'をしたいですか? –

答えて

0

あなたは結果として"Two"をしたい場合は、これが最も簡単な方法のようになります。

Dim result As String() = relevantPart.ToArray() 

:あなたは、単一の文字列ではなくString()使用ToArrayしたくない場合は

Dim allToken As String() = "ONE\TWO\TRHREE\FOR\FIVE".Split("\"c) 
Dim relevantPart = allToken.Skip(1).Take(1) 
Dim result As String = String.Concat(relevantPart) ' "Two" 

サイドノート:配列を直接出力することはできません。String.Join

MsgBox(String.Join(", ", result)) ' f.e. comma separated 
+0

String.Concat(TextBox22.Text.Split( "\" c).Skip(1).Take(1)) – TM80

0

正規表現を使用しますが、これらの値は、メッセージボックスに

For Each ma As Match In matches 
    MsgBox(ma.ToString.Trim({"\"c})) 
Next 

を出てくるしたい場合

Dim TEST as String = "ONE\TWO\TRHREE\FOR\FIVE" 
Dim matches As MatchCollection = Regex.Matches(TEST, "\\(.|\n)*?\\", RegexOptions.IgnoreCase) 

今、これは、両方の "TWO" と "FOR" を取得します。あなたがちょうど "TWO"を望むなら、matches(0)だけが必要です。あなただけの1行の配列にマッチを取得したい場合

はまた、単一のメッセージボックスに配列の各値を持っている:

Dim values = Regex.Matches(TEST, "\\(.|\n)*?\\").Cast(Of Match)().[Select](Function(m) m.Value).ToArray() 
MsgBox(String.Join(", ", values)) 
1

は、Split関数を使用します。これは文字列に分割され、区切られた値を配列に格納します。これはすべての回答の中で最も簡単なもので、おそらくこれを行う最も正しい方法です。

Dim s() As String = Split("ONE\TWO\TRHREE\FOR\FIVE", "\") 
MessageBox.Show(s(1)) 

そして、これはそれを行うための.NETの方法です:

これはそれを行うためのVBの方法です

Dim mainString As String = "ONE\TWO\TRHREE\FOR\FIVE" 
Dim s() As String = mainString.Split("\") 
MessageBox.Show(s(1)) 
関連する問題