これは、正規表現を使用する場合に非常に適しています。文字列は次の正規表現と一致します。
(\d{2})-(\d{2})-(\d{2})-(\d{4})-(\d{2})[.-]?(\d{3})
入力をこの式と照合し、照合から6つの数字のグループを収集します。
var str = new[] {
"01-21-27-0000-00048", "01-21-27-0000-00.048", "01-21-27-0000-00-048"
};
foreach (var s in str) {
var m = Regex.Match(s, @"(\d{2})-(\d{2})-(\d{2})-(\d{4})-(\d{2})[.-]?(\d{3})");
for (var i = 1 /* one, not zero */ ; i != m.Groups.Count ; i++) {
Console.Write("{0} ", m.Groups[i]);
}
Console.WriteLine();
}
ダッシュで区切られたセグメント内の文字など、他の文字を許可する場合は、文字、数字、またはアンダースコアを示す\w
代わりに使用できます。\d
既知の範囲内、たとえば2〜4の範囲内で不特定の数のそのような文字を許可する場合は、「正確に2つ」を意味する{2,4}
より具体的なの代わりに正規表現で使用できます。{2}
例えば、
(\w{2,3})-(\w{2})-(\w{2})-(\d{4})-(\d{2})[.-]?(\d{3})
最初のセグメントに2〜3桁の数字または文字を含め、セグメント2および3の文字も許可します。