从资源中读取文本文件

时间:2014-10-07 18:27:40

标签: c# combobox resources

我正在尝试以下代码来分割文本文件中的单词。

文件写成如下:

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
                     {

代码做了什么.. 阅读每条线路。 在每行结果[0]中给出第一个单词,因为每行的第二个单词是结果[1]等。 当我在组合框中选择一个单词时,我检查它是否与文本文件中的单词相同,并且在result [x]中使用该行。 但是在C#中它给出了所有单词自己的结果[x]并且行无关紧要。

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

1 个答案:

答案 0 :(得分:0)

我想我知道问题是什么。首先需要将字符串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];
        }
    }
}