Чтобы ответить на ваш вопрос, этот метод будет делать:
int GetIntValue(string input, char prefix)
{
return int.Parse(input.Substring(input.IndexOf($"{prefix}: ") + 3, 1));
}
Это, однако, вернет 0
для всех ваших входных выборок.Причина, по которой мы анализируем только ноль, заключается в том, что они все равно будут игнорироваться анализатором int.
Если, как я подозреваю, вам нужно не целое число, а вместо полного числа, используйте что-то вроде этого:
decimal GetValue(string input, char prefix)
{
return decimal.Parse(input.Substring(input.IndexOf($"{prefix}: ") + 3).Split(new[] { ", ", "}" }, StringSplitOptions.None).First());
}
Не стесняйтесь заменить decimal
на то, что вы хотитекак.
Назовите это так:
var input = "FB:77:CB:0B:EC:09{W: 0,623413, X: 0,015374, Y: 0,005306, Z: -0,781723}";
var W = GetValue(input, 'W'); // 0.623413
var X = GetValue(input, 'X'); // 0.015374
var Y = GetValue(input, 'Y'); // 0.005306
var Z = GetValue(input, 'Z'); // -0.781723
Для этого нужно определить местоположение префикса, а затем проанализировать подстроку с начала следующего числа до разделителя (,
или }
).