У меня есть массив строк (items
), которые содержат цифры и слова - я извлекаю это из словаря (matches
), в котором есть значения int
и string
. Я хочу получить массив или что-то, что я могу перебрать, который просто содержит числа, отсортирован по номерам, а затем показывает их в консоли.
Я могу довольно легко сделать это для отдельных строк с помощью регулярных выражений, но когда у меня есть массив строк, я не знаю, как это сделать.
Код ниже, см. Комментарии:
var matches = new Dictionary<int, string>();
matches.Add(1, "value1");
matches.Add(2, "value5");
matches.Add(3, "value2");
var items = matches.Values.ToArray();
Array.Sort(items, StringComparer.CurrentCulture);
Regex rgx = new Regex(@"\D");
rgx.Replace(items, ""); //This doesn't work with arrays!
int[] numbers = Array.ConvertAll(items, s => int.Parse(s)); //This doesn't work because my strings still contain letters
foreach (int c in numbers)
{
Console.WriteLine(string.Format("Number is {0}", c));
Console.ReadKey();
}
Желаемый вывод:
Number is 1
Number is 5
Number is 2
Если это не очевидно, эти цифры взяты из value1
, value5
и value2
.