2014-09-09 1 views
0

Я разбираю файл .ini, и мне нужно настроить точную секцию. .ini файл выглядит так, и я пытаюсь целевой раздел «2-й раздел», а не продолжать:check for indented string

1st Section 
    item1 
    item2 
    item3 
2nd Section 
    item1 
    item2 
    item3 
3rd Section 
    item1 
    item2 
    item3 

Вот код, который я до сих пор целевой раздел заголовка «первая строка»

private static string ParseSataHeader(string sataHeader, string bcuFileName) 
    { 
     string strLine = ""; 
     StreamReader myReader = new StreamReader(bcuFileName); 
     bool foundSection = false; 

     while (strLine !=null) 
     { 
      strLine = myReader.ReadLine(); 
      if (strLine !=null) 
      { 
       if (String.Compare("2nd Section", strLine, StringComparison.OrdinalIgnoreCase) == 0) 
        sataHeader = strLine.Trim(); 
      } 

В VBS я знаю, что вы можете сделать функцию RegExpression, чтобы продолжать повторять, пока не найдете строку, которая не является отступом. Есть идеи?

+0

Вы имеете в виду это http://regex101.com/r/hI8vY0/1? –

+0

попробуйте это http://regex101.com/r/dU4yE6/1 – vks

+0

У меня была несколько схожая задача, поэтому я создал библиотеку [MadMilkman.Ini] (https://github.com/MarioZ/MadMilkman.Ini) для этого , Мне нужно указать, что вы действительно можете получить информацию о разделах INI или отступов элементов, например: «file.Sections [« 2nd Section »]. LeftIndentation» или «file.Sections [« 2nd Section »]. Keys [" item1 "] .LeftIndentation" –

ответ

1

Посмотрите на this INI parser, написанный для C#. Я считаю, что было бы хорошо, если вы используете какой-то парсер вместо регулярных выражений или некоторой строки расколе и т.д.

+0

Что, использовать парсер? [Почему вы хотите предложить это] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)? +1 – gunr2171

0

Использование ini-parser библиотеки кусок пирога

// Parse the ini file 
IniData parsedData = new FileIniDataParser.LoadFile("ini_file_path.ini"); 

// Get an specific value inside that section ... 
var value = parsedData["2nd Section"]["item1"] 

// ... or just iterate to get all values for that section 
foreach(KeyData key in parsedData["2nd Section"].Keys) 
    Console.WriteLine(key.Name + " = " + key.Value); 

Отказ от ответственности: Я создатель ини -parser