使用C#将文本追加到平面文件的每一行

时间:2016-07-28 20:55:23

标签: c# file-io

如何使用c#将文本附加到平面文件中的行尾?基本上,我想在每一行的末尾附加行号。

3 个答案:

答案 0 :(得分:2)

这是一个快速的单行版本,使用Linq' Enumerable.Select索引和String.Join Method (String, String[])重建行。

string path = "Path to your flat file";
var numberedText = String.Join(Environment.NewLine, File.ReadAllLines(path).Select((line, index) => string.Join(" ", line.Trim(), index + 1)));
Console.WriteLine(numberedText);

结果字符串在每行的末尾都有行号。

答案 1 :(得分:1)

只是MasterXD解决方案的快速重构:

var linesInText = stringWithText.Split(Environment.NewLine);

StringBuilder stringWithRowNumbers = new StringBuilder();

var row = 1;
foreach (var line in linesInText)
{
    stringWithRowNumbers.Append(line);
    stringWithRowNumbers.Append(row++);
    stringWithRowNumbers.Append(Environment.NewLine);
}
string result = stringWithRowNumbers.ToString();

使用StringBuilder将比简单的字符串连接更好地执行,并且被认为是此用例中的最佳实践。

答案 2 :(得分:0)

通过平面文件,我想你的意思是一个普通的文本文件?

首先,你想要将一段文字拆分成它的线条。这可以通过以下方式完成:

string[] linesInText = stringWithText.Split('\n');

字符\n代表一个新行。因此,每当出现“新线”时,就会分开。功能Split将字符串分成若干部分,其中分隔符作为输入。然后将这些部件制成一个字符串数组。在这种情况下,文本或字符串中的所有行都将变为数组。

现在您要将数字添加到每行的末尾。这可以通过以下方式完成:

string stringWithRowNumbers = "";
for (int i = 0; i < linesInText.Length; i++) // Go through all lines
{
    stringWithRowNumbers = linesInText[i] + "YourNumbers" + "\n"; // The old/first line + your numbers + new line
}

现在你应该在所有行的末尾都有一个包含数字的字符串。

我希望这会有所帮助。

编辑:我刚刚意识到你要求行号。这是正确的代码。

string stringWithRowNumbers = "";
for (int i = 0; i < linesInText.Length; i++) // Go through all lines
{
    // The space is intentional. If there is no space, then the number will not have any space between itself and the line
    stringWithRowNumbers = linesInText[i] + " " + (i + 1) + "\n"; // The old/first line + row number + new line
}