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

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

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

Мужики, привет еще раз, использую вот такой вот код:
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();

       }
Что мы имеем: 3 файла. FindStandart.txt - файл содержащий строки Которые мы будем искать в 3 файле ReplaceStandart.txt - файл содержащий строки на которые мы будем заменять в 3 файле items.txt - основной файл, в котором происходит замена. В чем проблема: Если у меня в 1 файле, то есть в FindStandart.txt одна строка, то он отлично находит ее в items.txt и потом заменяет на кучу строк из ReplaceStandart.txt... Если же у меня в 1 файле две и больше строк, то он ничего не заменяет.... Почему такая шляпа? Даже пробовал выводить на экран таким образом:
MessageBox.Show(finder);
- показывает несколько строк, а заменять не хочет, хотя строки были скопированы изначально с items.txt, то есть строки идентичные! Не знаю что делать... Заменять нужно именно 2 строки, и именно с помощью этого метода (заглянуть с 1 файлик, найти его содержимое в основном файлике, заглянуть во второй файлик;в основном файлике заменить найденное содержимое в 1 файлике на содержимое из 2го файлика) и больше никак....

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

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();
    }
}

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


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

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

6   голосов , оценка 4.333 из 5
Похожие ответы