繁体   English   中英

从文本文件C#中读取文本和变量

[英]Reading text and variables from text file c#

我有以下代码尝试从文本文件中读取数据(以便用户可以轻松修改),并根据文本文档中的单词以及表单中的变量自动设置段落格式。 我有文件“ body”进入一个字段。 我的正文文本文件中包含以下数据

“内容:” +内容

我希望以此为基础

内容:项目1、2等

根据我的意见 尽管输入了“”,但我只能在文本文档中得到确切的内容。 我究竟做错了什么? 我希望能得到除文字外的变量。

 string readSettings(string name)
        {
            string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Yuneec_Repair_Inv";

            try
            {
                // Create an instance of StreamReader to read from a file.
                // The using statement also closes the StreamReader.
                using (StreamReader sr = new StreamReader(path + "/" + name + ".txt"))
                {
                    string data = sr.ReadToEnd();
                    return data;
                }
            }
            catch (Exception e)
            {
                // Let the user know what went wrong.
                Console.WriteLine("The settings file for " + name + " could not be read:");
                Console.WriteLine(e.Message);
                string content = "error";
                return content;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            createSettings("Email");
            createSettings("Subject");
            createSettings("Body");

            yuneecEmail = readSettings("Email");
            subject = readSettings("Subject");
            body = readSettings("Body");           

        }

 private void button2_Click(object sender, EventArgs e)
        {
            bodyTextBox.Text = body;
        }

如果要为用户提供自定义文本某些部分的功能,则应使用可以事先搜索并解析出的“指示符”,例如@和@之间的所有内容,读取为字符串。

您好@道格拉斯先生@,

今天是@DayOfTheWeek @ .....

那时,您的用户可以替换@和@符号之间的所需内容,然后您将其读取(例如,使用正则表达式)并将其用作“变量”文本。

让我知道您是否要这样做,我可以提供一些C#代码作为示例。

好的,这是示例代码:

        StreamReader sr = new StreamReader(@"C:\temp\settings.txt");
        var set = sr.ReadToEnd();
        var settings = new Regex(@"(?<=\[)(.*?)(?=\])").Matches(set);
        foreach (var setting in settings)
        {
            Console.WriteLine("Parameter read from settings file is " + setting);
        }
        Console.WriteLine("Press any key to finish program...");
        Console.ReadKey();

这是文本文件的来源:

您好[MrReceiver],

这是来自[公司]的[用户],使用它作为示例不是很通用:)

[签名]

希望这可以帮助!

当您从文件中以字符串形式读取文本时,将获得文本字符串,仅此而已。

系统的任何部分都不会假设它是C#,可以在当前范围内对其进行解析,编译和执行,然后将结果转换为文本并提供结果。

那基本上不是人们想要的,并且会带来很大的安全风险-您想要的最后一件事是从程序外部执行任意代码而没有任何检查。

如果需要模板引擎,则需要构建一个模板引擎-例如,读取字符串,处理字符串以查找关键字(例如%content% ,然后将数据添加到它们所在的位置-或找到模板处理库并将其集成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM