我有一个这样的字符串(我的阅读行):
阿尔法:10662 Beta:-64 gama:70679 Delta:1001
我需要使用其中一些数字作为参数,但是这些数字的长度可以变化。我可以想象,我可以做到的提取价值阿尔法:
str1 = readline.Substring(6, 5);
但是,如果beta和alpha的值可以变化,我将如何获得gamma的值?
最佳答案
您可以使用正则表达式来匹配所有name:value
对,并使用捕获组来提取名称和值:
var readline = "alpha: 10662 beta: -64 gamma: 70679 delta: 1001";
var matches = Regex.Matches(readline, @"(?<parameter>\w*):\s*(?<value>-?\d*)");
var dictionary = new Dictionary<string,int>();
foreach (Match m in matches)
{
dictionary.Add(m.Groups["parameter"].Value,int.Parse(m.Groups["value"].Value));
}
Console.WriteLine(dictionary["gamma"]); // output: 70679