簡體   English   中英

從資源讀取文本文件

[英]Read text file from resource

我正在嘗試以下代碼在文本文件中拆分單詞。

該文件是這樣寫的:

Apple"Juice"Martini
Lemon"Juice"Party
Banana"Smoothie"Aligns

和以下代碼:

        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
                     {

代碼的作用。逐行讀取每一行。 給每一行result [0]中的第一個單詞,因為每一行中的第二個單詞都是result [1]等。當我在組合框中選擇一個單詞時,我檢查它是否與文本文件中的單詞相同,並在結果中使用該行[X]。 但是在C#中,它為所有單詞提供了自己的result [x],而行並不重要。

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

我想我明白了問題所在。 您首先需要將字符串resource_data拆分為單獨的行。 您可以通過在新的換行符上拆分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];
        }
    }
}

另外,如果僅在資源中存儲文件的路徑,則可以打開文件並從中讀取:

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];
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM