Как обновить значение c в строке c текстового файла c# - PullRequest
1 голос
/ 24 апреля 2020

Например, каждая строка в моем текстовом файле имеет формат element1,element2,element3, у меня есть id int, чтобы иметь возможность определить, какую строку я хочу редактировать, это делается путем сравнения id с element3, и я хочу иметь возможность заменить element1 на строку EditCategoryInput. Затем я хочу записать все элементы массива из txtData обратно в мой файл.

Это мой код, который пока не работает:

 var itemFile = Server.MapPath("~/App_Data/Categories.txt");

 string[] txtData = System.IO.File.ReadAllLines(itemFile);
 int count = 0;
 foreach(string row in txtData)
 {
   if (row.Split(',')[2] == Convert.ToString(id))
   {
     txtData[count] = txtData.Select(s => s.Replace(row.Split(',')[2], EditCategory)).ToArray();
   }
   count++;  
 }
System.IO.File.WriteAllLines(itemFile, txtData);

Ошибка в этой строке:

txtData[count] = txtData.Select(s => s.Replace(row.Split(',')[2], EditCategory)).ToArray();

Я не уверен, нахожусь ли я на правильном пути или полностью потерян, любая помощь будет признательна.

1 Ответ

1 голос
/ 24 апреля 2020

Вам необходимо перестроить коллекцию строк с новыми значениями. Вам нужно разобрать его и собрать заново

foreach(string line in lines)
{
    string[] items = line.Split(',');

    if (items[2] == id.ToString())
    {
        items[0] = EditCategoryInput;
    }
    newLineList.Add(string.Join(',', items )); // add your new or unchanged line to new line collection
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...