c# - 在文本文件中的每一行的第 n 个位置插入字符
问题描述
我有文本文件,我需要在文本文件的每行的第 8 个字符处添加一个空格。文本文件有 1000+ 多行
我将如何进行?
原始文件示例:
123456789012345....
abcdefghijklmno....
新文件:
12345678 9012345
abcdefgh ijklmno
阅读这篇文章很有帮助:
注意:文本行的长度可以是可变的(不确定是否重要,一行可以有 20 个字符,下一行可以有 30 个字符等。所有文本文件都在文件夹中:C:\TestFolder
类似的问题:
解决方案
您不需要在这里使用正则表达式。一种简单的方法是使用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());
在这里,我为测试目的使用了不同的输出路径(不要覆盖输入)
编辑:
修改后的代码循环遍历文件夹中的所有 .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
}
推荐阅读
- php - 如何解决 Laravel Composer 问题 - 您的需求无法解析为一组可安装的软件包
- python - Python 请求 - 发送 null 作为查询参数值
- javascript - 如何在 django 中自动更新页面而不刷新?
- javascript - Expo:未处理的承诺拒绝:TypeError:未定义不是对象(评估'props.navigation')]
- reactjs - 反应中的道具功能错误“不是功能”
- java - 应用程序一点击按钮就崩溃
- visual-studio-code - 每当左侧相应的 EPS 发生变化时,如何自动更新右侧查看的 PDF?
- javascript - 如何使用 JavaScript 访问不同级别的嵌套 graphql 响应?
- linux - 如何使用 AWK 或 SED 替换 CSV 文件中的多个列?
- r - mutate() + group_by() 不起作用