2017-12-03 18 views
0

私のM.U.G.E.Nトーナメントプログラムでは、ログファイルから一致結果を処理したいと考えています。これはゲームによってで作成されています。ログは次のようになります。私が欲しいものC#ログファイルから特定のプロパティを読み取る

[Match 1] 
totalmatches = 1 
team1.1 = 
team2.1 = 
stage = stages/kowloon.def 

[Match 1 Round 1] 
winningteam = 1 
timeleft = -1.00 
p1.name = Knuckles the Echidna 
p1.life = 269 
p1.power = 0 
p2.name = Shadow the Hedgehog 
p2.life = 0 
p2.power = 2684 

[Match 1 Round 2] 
winningteam = 2 
timeleft = -1.00 
p1.name = Knuckles the Echidna 
p1.life = 0 
p1.power = 1510 
p2.name = Shadow the Hedgehog 
p2.life = 586 
p2.power = 2967 

[Match 1 Round 3] 
winningteam = 2 
timeleft = -1.00 
p1.name = Knuckles the Echidna 
p1.life = 0 
p1.power = 3000 
p2.name = Shadow the Hedgehog 
p2.life = 789 
p2.power = 777 

は試合の結果を決定するために、最後のwinningteamプロパティを処理することです。これを達成する最も効果的な方法は何ですか? (おそらくLINQで)

+2

としてチーム番号を持っています。どのようにファイルを読んでいるのですか?どうやって違う行を得るのですか? –

+1

[INIファイルの読み込み/書き込み]の可能な複製(https://stackoverflow.com/questions/217902/reading-writing-an-ini-file) – Slai

答えて

0

File.ReadLinesを使用すると、行の列挙をIEnumerable<string>として返すことができます。あなたはすでにこれを達成するために使用しようとした「道」を提供してください

// string path contains file path and file name. 
string line = File.ReadLines(path) 
    .LastOrDefault(ln => ln.StartsWith("winningteam =")); 

は今第二部をトリミング、=で文字列を分割し、あなたは、文字列

if (line != null) { 
    string team = line.Split('=')[1].Trim(); 
    // With "winningteam = 2", [0] = "winningteam ", [1] = " 2" 

    // Optionally convert it to a number 
    int teamNo = Int32.Parse(team); 

    ... 
} 
関連する問題