Как достать числовые значения из строки?
Имеется строка MoreValue|Value10|Product40. Мне нужно получить две переменные. Например: int value = 10; int id = 40; Помогите пожалуйста заранее благодарен.
Ответы (2 шт):
Автор решения: aepot
→ Ссылка
Например так
string input = "MoreValue|Value10|Product40";
string[] tokens = input.Split('|');
List<int> numbers = new List<int>();
foreach(string token in tokens)
{
if (int.TryParse(string.Concat(token.Where(c => char.IsDigit(c))), out int number))
numbers.Add(number);
}
int value = numbers[0]; // 10
int id = numbers[1]; // 40
Или еще можно с помощью регулярного выражения
string input = "MoreValue|Value10|Product40";
var matches = Regex.Matches(input, @"\d+");
int value = int.Parse(matches[0].Value); // 10
int id = int.Parse(matches[1].Value); // 40
Автор решения: Alexander Petrov
→ Ссылка
В один проход без выделения дополнительной памяти:
ReadOnlySpan<char> input = "MoreValue|Value10|Product40";
for (int i = 0; i < input.Length; i++)
{
if (char.IsDigit(input[i]))
{
int j;
for (j = i + 1; j < input.Length && char.IsDigit(input[j]); j++)
{
}
int number = int.Parse(input[i..j]);
Console.WriteLine(number); // помещаем в коллекцию и т. п.
i = j;
}
}