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

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

Как бы я это провел?

Пример оригинального файла:

123456789012345....
abcdefghijklmno....

Новый файл:

12345678 9012345
abcdefgh ijklmno

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

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

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

Аналогичный вопрос:

Удалить символ в n-й позиции для каждой строки в текстовом файле

1 Ответ

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

Здесь вам не нужно использовать регулярные выражения. Один простой способ - использовать File.ReadAllLines, чтобы прочитать все строки и просто добавить свой символ в нужную позицию, как показано в следующем коде:

var sb = new StringBuilder();
string path = @"E:\test\test.txt"; //input file
string path2 = @"E:\test\test2.txt"; //the output file, could be same as input path to overwrite
string charToInsert = " ";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
    sb.AppendLine(line.Length > 8 ? line.Substring(0, 8) + charToInsert + line.Substring(9) : line);
}
File.WriteAllText(path2, sb.ToString());

Здесь я использую другой путь для вывода в целях тестирования (не перезаписывать ввод)

EDIT:

Измененный код для циклического просмотра всех файлов .txt в папке:

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, 8) + charToInsert + line.Substring(9) : line);
    }
    File.WriteAllText(file, sb.ToString()); //overwrite modified content
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...