Заменить кусок текста из нескольких строк - C#
Формулировка задачи:
Мужики, привет еще раз, использую вот такой вот код:
Что мы имеем: 3 файла.
FindStandart.txt - файл содержащий строки Которые мы будем искать в 3 файле
ReplaceStandart.txt - файл содержащий строки на которые мы будем заменять в 3 файле
items.txt - основной файл, в котором происходит замена.
В чем проблема:
Если у меня в 1 файле, то есть в FindStandart.txt одна строка, то он отлично находит ее в items.txt и потом заменяет на кучу строк из ReplaceStandart.txt...
Если же у меня в 1 файле две и больше строк, то он ничего не заменяет....
Почему такая шляпа? Даже пробовал выводить на экран таким образом:
- показывает несколько строк, а заменять не хочет, хотя строки были скопированы изначально с items.txt, то есть строки идентичные!
Не знаю что делать... Заменять нужно именно 2 строки, и именно с помощью этого метода (заглянуть с 1 файлик, найти его содержимое в основном файлике, заглянуть во второй файлик;в основном файлике заменить найденное содержимое в 1 файлике на содержимое из 2го файлика) и больше никак....
Листинг программы
- private void button9_Click(object sender, EventArgs e)
- {
- FileStream find = new FileStream("FindStandart.txt", FileMode.Open, FileAccess.Read);
- StreamReader finde = new StreamReader(find);
- string finder = finde.ReadToEnd(); //считали в переменную содержимое файла в котором ищем строки
- find.Close();
- finde.Close();
- FileStream repl = new FileStream("ReplaceStandart.txt", FileMode.Open, FileAccess.Read);
- StreamReader replace = new StreamReader(repl);
- string replacer = replace.ReadToEnd(); //считали в переменную содержимое файла из которого будем заменять
- repl.Close();
- replace.Close();
- FileStream fn = new FileStream("items/items.txt", FileMode.Open, FileAccess.Read);
- StreamReader fon = new StreamReader(fn);
- string str = fon.ReadToEnd(); //считали в переменную содержимое основного файла
- fon.Close();
- fn.Close();
- str = str.Replace(finder, replacer); //заменили содержание
- fn = new FileStream("items/items.txt", FileMode.Create, FileAccess.Write);
- StreamWriter fin = new StreamWriter(fn);
- fin.Write(str); //записали обрано
- fin.Close();
- fn.Close();
- }
Листинг программы
- MessageBox.Show(finder);
Решение задачи: «Заменить кусок текста из нескольких строк»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- static class Program
- {
- private static void
- Replace(string[] text, Dictionary<string, string> replacements)
- {
- string r;
- for( int i = 0; i < text.Length; ++i ) {
- if( replacements.TryGetValue(text[i], out r) ) {
- text[i] = r;
- }
- }
- }
- static void Main()
- {
- string[] heroes = {
- "Aladdin",
- "The Genie",
- "Jafar",
- "Princess Jasmine",
- "Abu",
- "Caged Iago",
- "The Sultan",
- "Razoul",
- "Magic Carpet",
- "Gazeem",
- "Rajah"
- };
- var battle = new Dictionary<string, string>();
- battle.Add("Jafar", "Dead Jafar");
- battle.Add("Caged Iago", "Iago");
- battle.Add("Razoul", "Loyal Razoul");
- Replace(heroes, battle);
- foreach( string i in heroes ) {
- Console.WriteLine(i);
- }
- Console.ReadKey();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д