Удалить символ в n-й позиции для каждой строки в текстовом файле - PullRequest
1 голос
/ 27 апреля 2019

У меня есть несколько текстовых файлов в папке.Мне нужно удалить символ на 8-м символе каждой строки в текстовых файлах.Текстовые файлы имеют более 100 строк

Как бы я это сделал?

Пример исходного файла:

123456789012345....
abcdefghijklmno....

Новый файл:

12345679012345
abcdefgijklmno

Чтение этой статьи полезно:

Добавьте символ в каждую строку строки

Примечание: длина текстовых строк может быть переменной (не уверен, если это имеет значение - одинстрока может содержать 20 символов, следующая строка может содержать 30 символов и т. д. Все текстовые файлы находятся в папке: C: \ TestFolder

Аналогичный вопрос: Вставить символ в n-ю позицию для каждой строки в текстовом файле.

1 Ответ

1 голос
/ 27 апреля 2019

В качестве следующих методов можно использовать File.ReadAllLines() и string.Substring():

string path = @"C:\TestFolder";
string charToInsert = " ";
string[] allFiles = Directory.GetFiles(path, "*.txt", SearchOption.TopDirectoryOnly); //Directory.EnumerateFiles
foreach (string file in allFiles)
{
    var sb = new StringBuilder();
    string[] lines = File.ReadAllLines(file); //input file
    foreach (string line in lines)
    {
        sb.AppendLine(line.Length > 8 ? line.Substring(0, 7) + line.Substring(8) : line);
    }
    File.WriteAllText(file, sb.ToString()); //overwrite modified content
}
  • line.Substring(0, 7) означает первые 7 символов (символы с № 0 по № 6 длиной 7).
  • line.Substring(8) означает от 9-го символа до конца (символ № 8 до конца).

Обратите внимание, что позиции символов индексируются нулем!

...