2017-07-24 47 views
0

我有一個文本文件,下面的代碼:查找文本

static const char* g_FffectNames[EFFECT_COUNT] = { 
"Fade In and Fade Out", 
"Halloween Eyes", 
"Rainbow Cycles" 
}; 

我可以使用g_FffectNames[EFFECT_COUNT]爲起點在這個大的文本文件進行搜索。但是我需要在引號內(例如萬聖節眼睛或彩虹週期)。

在C#中獲取這些文本的最佳方式是什麼?我還必須假設在該文件之上(在static const之前)和底部(在};之後)有更多的代碼,並且諸如= {};之類的字符之間的間距對於用戶是可選的。

我應該將所有這些行壓縮爲一個字符串並開始搜索,還是應該使用某種正則表達式匹配來使這更容易?

+1

這不是C#代碼。這看起來像C++。 – Amy

+3

@Amy它看起來像OP在C#中編寫一個解析器來讀取C聲明。 – dasblinkenlight

+0

我認爲C++是在文本文件中,但爲什麼需要解析這樣的文件轉義我。 –

回答

0

您可以使用正則表達式來解析輸入文件:

var input = /* file content */; 
var regex = new Regex("^\\s*\"(?<row>[^\"]+)\\s*\"", RegexOptions.Multiline); 
var values = regex.Matches(input) 
    .Cast<Match>() 
    .Select(m => m.Groups["row"]).ToArray(); 
0

我得到它的工作基於此職位:

c# search string in txt file

public string readText() 
     { 
      string test = string.Empty; 
      var mytext = File.ReadLines("C:\\temp\\test_search.txt") 
       .SkipWhile(line => !line.Contains("g_FffectNames[EFFECT_COUNT]")) 
       .Skip(1) 
       .TakeWhile(line => !line.Contains("};")); 

      foreach (var line in mytext) 
      { 
       test += line; 
      } 

      return test; 
     }