我有文本文件,我需要在文本文件中每行的第8个字符处添加一个空格。文本文件具有1000多个行
我将如何进行?
原始文件示例:
123456789012345....
abcdefghijklmno....
新文件:
12345678 9012345
abcdefgh ijklmno
阅读本文很有帮助:
Add a character on each line of a string
注意:文本行的长度可以变化(不确定是否重要,一行可以包含20个字符,下一行可以包含30个字符,依此类推。所有文本文件都位于以下文件夹中:C:\ TestFolder
类似的问题:
Delete character at nth position for each line in a text file
答案 0 :(得分:2)
您无需在此处使用正则表达式。一种简单的方法是使用File.ReadAllLines
读取所有行,然后只需将您的char添加到所需位置,如以下代码所示:
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());
这里我出于测试目的使用其他路径进行输出(请勿覆盖输入)
编辑:
修改后的代码可遍历文件夹中的所有.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
}