Здесь вам не нужно использовать регулярные выражения. Один простой способ - использовать 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
}