class Program
{
static void Main(string[] args)
{
string[] inputs
= new[] { "XxC12X6ABCjklMZ",
"ABC12X21ABCjklMZ",
"XXX1X21ABCjklMZ" };
foreach (var input in inputs)
{
Console.WriteLine(ParseField(input));
}
foreach (var input in inputs)
{
ParseFieldbyStep(input);
}
Console.ReadKey();
}
static string ParseField(string input)
{
return String.Concat(input.Substring(input.IndexOf('X', 3) + 1).SkipWhile(Char.IsNumber));
}
static void ParseFieldbyStep(string input)
{
Console.WriteLine();
Console.WriteLine(input);
var removeFirst3chars = input.Substring(3);
Console.WriteLine(removeFirst3chars + " - First 3 char removed");
var indexOfFirstX = removeFirst3chars.IndexOf('X');
Console.WriteLine(indexOfFirstX + " = Index of First X in \"" + removeFirst3chars +"\"");
var indexAfterFirstX = indexOfFirstX + 1;
var stringAfterFirstX = removeFirst3chars.Substring(indexAfterFirstX);
Console.WriteLine(stringAfterFirstX + " - string after X ");
int numberIndex = 0;
while (Char.IsNumber(stringAfterFirstX[numberIndex]))
{
Console.WriteLine(stringAfterFirstX[numberIndex] + " - is a number");
numberIndex++;
}
Console.WriteLine(stringAfterFirstX[numberIndex] + " - first non-number");
var result = stringAfterFirstX.Substring(numberIndex);
Console.WriteLine("Result = " + result);
}
}