したがって、ここには 2 つの問題があります。1 つ目は、正しい行を選択することと、次に番号を取得することです。
最初に、各行をリストに入れるメソッドが必要です。たとえば、次のようなものを使用します。
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]);
}
}
ここでも、文字列が表示された形式であると想定しており、ここでエラー保護を行う必要があります。