C#:如何在字符串中的每一行前加上文本?

Dan*_*nor 2 c# string implementation

"MagicFunction"的实现会如何使以下(nunit)测试通过?

public MagicFunction_Should_Prepend_Given_String_To_Each_Line()
{
    var str = @"line1
line2
line3";

    var result = MagicFunction(str, "-- ");

    var expected = @"-- line1
-- line2
-- line3";

    Assert.AreEqual(expected, result);
}
Run Code Online (Sandbox Code Playgroud)

Spe*_*ort 7

string MagicFunction(string str, string prepend)
{
   str = str.Replace("\n", "\n" + prepend);
   str = prepend + str;
   return str;
}
Run Code Online (Sandbox Code Playgroud)

编辑:
正如其他人所指出的,换行符在环境之间有所不同.如果您只打算对在同一环境中创建的文件使用此函数,那么System.Environment将正常工作.但是,如果在Linux机器上创建文件然后将其传输到Windows框,则需要指定其他类型的换行符.由于Linux使用\n而Windows使用\ r \n,因此这段代码适用于Windows和Linux文件.如果你把Mac投入混合(\ r),你将不得不想出更多的东西.

  • 甚至更好,Environment.NewLine怎么样.我很确定这就是它的用途.:) (7认同)