これには正規表現を使用しない方がよいと思います。あなたのフォーマットが次のようなものであると仮定すると1,3;5,1;6,4
(つまり、他の@Richが指摘しているように質問で指定したものではない)、それを分割して;
から,
:
var input = "1,3;5,1;6,4";
var pairs = input.Split(';') // ["1,3","5,1","6,4"]
.Select(x => x.Split(',')) // [["1","3"],["5","1"],["6","4"]]
.Select(x => new { Id = x[0], Volume = x[1] }); // [{ Id : "1", Volume : "3"} ...]
foreach(var pair in pairs)
{
Console.WriteLine("Id: " + pair.Id + " Volume: " + pair.Volume);
}
// Id: 1 Volume: 3
// Id: 5 Volume: 1
// Id: 6 Volume: 4
注:System.Linq
ここでは匿名タイプを使用しましたが、必要に応じて匿名タイプを使用することもできます。
注:IndexOutOfRangeException
入力が期待される形式でない場合、これは失敗します(つまり、をスローします)。危険な入力を検証したい場合は、おそらく正規表現が必要です。他の@Richの答えは私には良さそうです。