所以这里有两个问题,第一个是选对线,然后把号码弄出来。
首先,您需要一种将每一行放入列表的方法,例如使用以下内容:
List<String> lines = new List<String>()
string line = sr.ReadLine();
while(line != null)
{
lines.Add(line);
line = sr.ReadLine(); // read the next line
}
然后你需要找到相关的行并从中取出令牌。
可能最简单的方法是,对于每一行,将字符串拆分为 ','、'\"'、'(' 和 ')'(使用
String.Split)。也就是说,我们基本上得到了参数。
例如
foreach(string lineInFile in lines)
{
// split the string in to tokens
string[] tokens = lineInFile.Split(',', '\"', '(', ')');
// based on the sample strings and how we've split this,
// we take the 15th entry
string endParameter = tokens[15]; //endParamter = "Old School 14"
...
我们现在使用正则表达式来提取数字。我们将使用的模式是 d+,即 1 个或多个数字。
Regex numberFinder = new Regex("\\d+");
Match numberMatch = numberFinder.Match(endParameter);
// we assume that there is a match, because if there isn't the string isn't
// correct, you should do some error handling here
string matchedNumber = numberMatch.Value;
int value = Int32.Parse(matchedValue); // we convert the string in to the number
if(value == desiredValue)
...
我们检查该值是否与我们正在寻找的值匹配(例如 14),我们现在需要获取您想要的数字。
我们已经拆分了参数,我们想要的数字是第 8 项(例如 string[] 标记中的索引 7)。因为,至少在你的例子中,这只是一个单独的数字,我们可以解析它来获取 int。
{
return Int32.Parse(tokens[7]);
}
}
再次在这里,我们假设字符串采用您显示的格式,您应该在此处进行错误保护。