C# Не получается записать изменённые строки в файл

Всем привет! Подскажите, почему не получается записать изменённые строки в файл?

            string outputFilename = "output.csv";
            string[] NewFile = File.ReadAllLines("input.csv");
            foreach (string str in NewFile)
            {
                var re = new Regex(@"&.\w*;");
                string str1 = re.Replace(str, "");
                Console.WriteLine(str1);
            }
 
            File.WriteAllLines(outputFilename, NewFile, Encoding.UTF8);
            Console.ReadKey(true);

Понял, что записываю не изменения в файл, а прочитанный input в файл. Попробовал поменять:

File.WriteAllLines(outputFilename, str1, Encoding.UTF8);

Но говорит, что str1 не существует в текущем контексте


Ответы (1 шт):

Автор решения: arby

Проблема в том, что вы не перезаписываете ничего в массиве NewFile.

  1. Используйте цикл for, с его помощью можно не только читать данные из массива, но и изменять их.
  2. Вместо создания новой переменной str записывайте изменение в ваш массив NewFile
  3. Перепишите название вашего массив NewFile в lowerCamelCase, т.к. это локальная переменная, а лучше переименуйте её. Например: inputCsvData
for (int i = 0; i < inputCsvData.Length; i++)
{
    var re = new Regex(@"&.\w*;");
    inputCsvData[i] = re.Replace(inputCsvData[i], "");
    Console.WriteLine(inputCsvData[i]);
}
→ Ссылка