Поскольку у вас есть такой конкретный шаблон, вам даже не нужно использовать регулярные выражения. Поскольку первые два символа могут быть проигнорированы и все числа разделяются символами «X», это C# код должен делать трюк (с соответствующей обработкой ошибок добавляется, конечно)
public IEnumerable<decimal> ExtractNumbers(string s)
{ // For s = "CC77X1722X12"
string[] nums = s.Substring(2).Split('X'); // nums = ["77", "1722", "12"];
return nums.Select(num => decimal.Parse(num)); // returns [77, 1722, 12]
}
Для производства кода, хотя, Я бы порекомендовал decimal.TryParse над decimal.Parse
. Чтобы использовать этот метод, вы могли бы написать что-то вроде
public IEnumerable<decimal> ExtractNumbers(string s)
{
string[] nums = s.Substring(2).Split('X');
return nums
.Select(num => {
decimal d;
if (decimal.Parse(num, out d))
return new {Number = d, Succeeded = true};
return new {Number = 0, Succeeded = false};
})
.Filter(result => result.Succeeded)
.Select(result => result.Number);
}
Я должен решить этот вопрос по простому факту, что автор даже не поставил образец кода (т. Е. Покажите нам, что он пытался). –