Заменить кусок текста из нескольких строк - C#

Узнай цену своей работы

Формулировка задачи:

Мужики, привет еще раз, использую вот такой вот код:
Листинг программы
  1. private void button9_Click(object sender, EventArgs e)
  2. {
  3.  
  4. FileStream find = new FileStream("FindStandart.txt", FileMode.Open, FileAccess.Read);
  5. StreamReader finde = new StreamReader(find);
  6. string finder = finde.ReadToEnd(); //считали в переменную содержимое файла в котором ищем строки
  7. find.Close();
  8. finde.Close();
  9. FileStream repl = new FileStream("ReplaceStandart.txt", FileMode.Open, FileAccess.Read);
  10. StreamReader replace = new StreamReader(repl);
  11. string replacer = replace.ReadToEnd(); //считали в переменную содержимое файла из которого будем заменять
  12. repl.Close();
  13. replace.Close();
  14. FileStream fn = new FileStream("items/items.txt", FileMode.Open, FileAccess.Read);
  15. StreamReader fon = new StreamReader(fn);
  16. string str = fon.ReadToEnd(); //считали в переменную содержимое основного файла
  17. fon.Close();
  18. fn.Close();
  19. str = str.Replace(finder, replacer); //заменили содержание
  20. fn = new FileStream("items/items.txt", FileMode.Create, FileAccess.Write);
  21. StreamWriter fin = new StreamWriter(fn);
  22. fin.Write(str); //записали обрано
  23. fin.Close();
  24. fn.Close();
  25.  
  26. }
Что мы имеем: 3 файла. FindStandart.txt - файл содержащий строки Которые мы будем искать в 3 файле ReplaceStandart.txt - файл содержащий строки на которые мы будем заменять в 3 файле items.txt - основной файл, в котором происходит замена. В чем проблема: Если у меня в 1 файле, то есть в FindStandart.txt одна строка, то он отлично находит ее в items.txt и потом заменяет на кучу строк из ReplaceStandart.txt... Если же у меня в 1 файле две и больше строк, то он ничего не заменяет.... Почему такая шляпа? Даже пробовал выводить на экран таким образом:
Листинг программы
  1. MessageBox.Show(finder);
- показывает несколько строк, а заменять не хочет, хотя строки были скопированы изначально с items.txt, то есть строки идентичные! Не знаю что делать... Заменять нужно именно 2 строки, и именно с помощью этого метода (заглянуть с 1 файлик, найти его содержимое в основном файлике, заглянуть во второй файлик;в основном файлике заменить найденное содержимое в 1 файлике на содержимое из 2го файлика) и больше никак....

Решение задачи: «Заменить кусок текста из нескольких строк»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. static class Program
  5. {
  6.     private static void
  7.     Replace(string[] text, Dictionary<string, string> replacements)
  8.     {
  9.         string r;
  10.         for( int i = 0; i < text.Length; ++i ) {
  11.             if( replacements.TryGetValue(text[i], out r) ) {
  12.                 text[i] = r;
  13.             }
  14.         }
  15.     }
  16.  
  17.     static void Main()
  18.     {
  19.         string[] heroes = {
  20.             "Aladdin",
  21.             "The Genie",
  22.             "Jafar",
  23.             "Princess Jasmine",
  24.             "Abu",
  25.             "Caged Iago",
  26.             "The Sultan",
  27.             "Razoul",
  28.             "Magic Carpet",
  29.             "Gazeem",
  30.             "Rajah"
  31.         };
  32.  
  33.         var battle = new Dictionary<string, string>();
  34.         battle.Add("Jafar", "Dead Jafar");
  35.         battle.Add("Caged Iago", "Iago");
  36.         battle.Add("Razoul", "Loyal Razoul");
  37.  
  38.         Replace(heroes, battle);
  39.        
  40.         foreach( string i in heroes ) {
  41.             Console.WriteLine(i);
  42.         }
  43.         Console.ReadKey();
  44.     }
  45. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы