2015-09-21 5 views
0

У меня есть следующий код, который пытается прочитать данные из текстового файла (так что пользователи могут легко изменять) и автоматически форматировать абзац на основе слов в текстовом документе плюс переменные в форма. У меня есть файл «тело», входящий в поле. мой текст тела файл имеет следующие данные в немЧтение текста и переменных из текстового файла C#

"содержание:" + содержание

Я надеялся, основанный на том, что, чтобы получить

содержание: Пункт 1, 2, и т.д. .

на основе ввода. Я получаю именно то, что есть в тексте doc, несмотря на то, что я поставил «». Что я делаю не так? Я надеялся получить переменные в дополнение к моему тексту.

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; 
     } 
+0

Вы пытаетесь прочитать в csv? –

ответ

3

Если вы хотите, чтобы ваши пользователи могли настраивать определенные части текста, вы должны использовать некоторый «индикатор», который вы знаете перед собой, который можно искать и разбирать, что-то вроде всего, что находится между @ и @ это то, что вы будете читать как строку.

Здравствуйте @Mr Дуглас @,

Сегодня @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],

Это [Пользователь] из [Компания] что-то еще, не очень универсальное, используя это в качестве примера :)

[Подпись]

Надеюсь, это поможет!

+0

Да, это будет хорошо. Не могли бы вы показать мне пример кода, который вы упомянули для разбора. – mberna

+0

Исходный код добавлен пример. – ProgrammerV5

+0

Большое спасибо за вашу помощь! – mberna

0

Когда вы читаете текст из файла в виде строки, вы получаете строку текста, не более того.

Не существует части системы, которая предполагает, что она C#, анализирует, компилирует и выполняет ее в текущей области, передает результат в текст и дает результат.

Это будет в основном не то, что люди хотят, и будет большой риск для безопасности. Последнее, что вы хотите, - это выполнить произвольный код вне вашей программы без проверок.

Если вам нужен шаблонный двигатель, вам нужно построить один - например. читать в строке, обрабатывать строку, ищущую ключевые слова, например. %content%, затем добавьте данные там, где они есть, или найдите библиотеку обработки шаблонов и интегрируйте ее.

Смежные вопросы