using System.Text.RegularExpressions;
using System.Collections.Generic;
public class DetailRecord
private readonly string _originalText;
static private Dictionary<string, Func<string,string>> _map = new Dictionary<string, Func<string,string>>
{ "ContractNo", s => s.Substring( 1 , 10 ) },
{ "BankNum", s => s.Substring( 15 , 8 ) },
{ "ShortName", s => s.Substring( 35 , 10 ).Trim() }
public DetailRecord(string originalText)
_originalText = originalText;
public string this[string key]
return _map[key](_originalText);
get { return this["BankNum"]; }
get { return this["ContractNo"]; }
get { return this["ShortName"]; }
if (!int.TryParse(this.ContractNo, out dummy)) return false;
if (!Regex.IsMatch(this.BankNum, @"[A-Z]\d\d\s\s\d\d\d")) return false;
public static void Main()
var input = " 0759651386 X08 606 0209784104 BURTON 3334.24";
var line = new DetailRecord(input);
Console.WriteLine("Contract number: '{0}'", line.ContractNo);
Console.WriteLine("Bank number: '{0}'", line.BankNum);
Console.WriteLine("Short name: '{0}'", line.ShortName);