Сохранение целочисленного значения после того, как строка найдена в текстовом файле


У меня есть программа, которая читает .HRM-файлы, и я хочу, чтобы он искал в текстовом файле и извлекал целочисленное значение после того, что в нем указано. Я читаю текстовый файл для других вещей,я просто не могу понять это. Как показано ниже, например:

if (line.Contains("Version="))
{
    //Get the integer after 'Version='
}

Я не очень уверен, как получить это целое значение и сохранить его.

Файл HRM выглядит следующим образом:

[Params]
Version=106
Monitor=34
SMode=111111100
Date=20130205
StartTime=15:46:20.0
Length=01:06:18.9
Interval=1
Upper1=0
Lower1=0
Upper2=0
Lower2=0
Upper3=180
Lower3=170
Timer1=00:00:00.0
Timer2=00:00:00.0
5 2

5 ответов:

После того, как вы обнаружите, что строка содержит Version=

var number = int.Parse(line.Split('=')[1]);

Как насчет

int Version = int.Parse(line.Split('=')[1]);
var versionNumber = int.Parse(line.Replace("Version=", string.Empty));

Или вы можете сделать регулярное выражение и так далее.

Вы можете использовать строковые методы IndexOf и Substring, например, с этим запросом LINQ:

IEnumerable<String> versions =
    from line in File.ReadAllLines(@"filename.HRM") // go through all the lines
    let index = line.IndexOf("Version=") // returns -1 if the line doesn't contain "Version="
    where index >= 0 // return also those which contain it
    select line.Substring(index + "Version=".Length);    // return just the version after the '=' sign

foreach (string version in versions)
    Console.WriteLine(version);

Если вы ожидаете только один, вы также можете использовать string version = versions.FirstOrDefault();

Если вы хотите преобразовать его в int, Используйте int.Parse.

Если вы хотите иметь возможность извлекать только числа из любой строки, вы бы использовали это:

int versionNumber = int.Parse(Regex.Match(line, @"\d+").Value);