2009-08-21 8 views
0

Visual Basicで使用される分割関数に関する質問がありました。今のところ、私は文字列値をもたらす関数を書いています。返される文字列の値は、おそらくこの "List1; List2; Field1、Field2"のようになります。私の目標は、この文字列のsplit関数を使用して、すべてのリストを1つの配列に入れ、そのフィールドを別の配列に入れることです。2つの配列の分割関数を操作する

問題はList2とField1の間です。 Field1をリスト配列に配置したくありません。私は解析することでこれを行う方法があるかもしれないと思っていますが、わかりません。私の現在のコードは以下の通りです。助けを前にありがとう。

 Dim s As String = GetSetting("ReOrderList", properties.SiteId) 
     Dim affectedLists() As String = s.Split(";") 
     Dim affectedFields() As String = s.Split(",") 
+0

"返される文字列の値は、おそらくこのようになります" List1; List2;フィールド1、フィールド2 "うわー、残酷だよ。あなたはそのコードにアクセスできますか?より一貫性のある文字列を返したり、文字列を生成する関数に2つの配列を返したりできますか? – Juliet

答えて

0

リストがフィールドの前に来ることがわかっている場合は、最後の ';'で文字列を切り取ることができます。文字:

Dim splitPos As Integer = input.LastIndexOf(";"c) 
Dim lists As String = input.Substring(0, splitPos+1) 
Dim fields As String = input.Substring(splitPos+1, input.Length - (splitPos+1)) 

次に、リストとフィールドを個別に操作できます。

0

文字列を分割する場所を見つけるには、String.LastIndexOfを使用します。

Imports System 

Class Test 
    Shared Sub Main() 

     Dim sample As String = "List1;List2; Field1,Field2" 

     Dim middle As Int32 = sample.LastIndexOf(";") 

     Dim lists As String = sample.Substring(0, middle).Trim() 
     Dim fields As String = sample.Substring(middle + 1).Trim() 

     Dim affectedLists As String() = lists.Split(";"C) 
     Dim affectedFields As String() = fields.Split(","C) 

    End Sub 
End Class 
+0

ありがとう皆さん。私は答えがどれくらい速いか信じられませんでした。 –

関連する問題