2014-10-07 275 views
0

我正在嘗試以下代碼來分割文本文件中的單詞。從資源中讀取文本文件

該文件是這樣寫的:

,代碼如下:

 string resource_data = Properties.Resources.textfile; 
     string[] result = resource_data.Split('"'); 
     foreach (string lines in result) 
     { 
      if(comboBox1.Text == result[0]) 
      { 
       richTextBox2.Text = result[2]; 
      } 
     } 

採取&從C++程序我正在與同一txt文件的工作完美編輯。

   String^ resource_data = "textfile.txt"; 
      try 
      { 
       StreamReader^ DataIn = File::OpenText(resource_data); 
       String^ DataStr; 
       int count = 0; 
       array<String^>^ result; 
       array<Char>^ separ = gcnew array<Char>{'"'}; 

       while((DataStr = DataIn->ReadLine()) != nullptr) 
       { 
        count++; 
        result = DataStr->Split(separ); 
        if(comboBox1->Text == result[0]) // result[0] = Name 
        { 

的代碼做什麼.. 閱讀每一條線,因爲它自己。 在每行結果[0]中給出第一個單詞,因爲每行上的第二個單詞是結果[1]等。 當我在組合框中選擇一個單詞時,檢查它是否與文本文件中的單詞相同,並且使用該行在結果[x]中。 但在C#中,它給出了所有單詞自己的結果[x],行不重要。

我如何使C++中的以下代碼在C#中工作,但在resources.resx中有文本文件?

回答

0

我想我明白了問題所在。您首先需要將字符串resource_data分成不同的行。

string[] lines = resource_data.Split(new string[1] { Environment.NewLine }, StringSplitOptions.None); 
foreach (var line in lines) 
{ 
    string[] parts = line.Split('"'); 
    if (comboBox1.Text == result[0]) 
    { 
     richTextBox2.Text = result[2]; 
    } 
} 

你也可以做到這一點使用一個StringReader:

using (StringReader reader = new StringReader(resource_data)) 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 

此外,如果你只保存到文件的路徑,你可以通過分裂resource_data在新行字符(縣)這樣做在資源中,您可以打開文件並從中讀取:

using (StreamReader reader = File.OpenText(resource_path)) // path to file 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 
+0

非常感謝您的回答。第一個工作完美。第二個一直給出null,第三個給出錯誤:路徑中的非法字符。再次感謝您的幫助:) – Xakzi 2014-10-08 19:41:30

+0

第三個是如果您只存儲文件的路徑而不是文件的內容,但無論如何樂意提供幫助! – 2014-10-08 19:44:59