比较 C# 中包含格式的字符串

Fin*_*las 2 c# string equality

我正在开发一个函数,它给出了一些设置 - 例如行距,输出(以字符串形式)被修改。为了测试此类场景,我使用字符串文字,如下所示的预期结果。

该方法使用字符串生成器 ( AppendLine) 生成所述输出。我遇到的一个问题是比较这些字符串。在下面的示例中,两者就其所代表的含义而言是相同的。结果是我关心的区域,但是当比较两个字符串时,一个是文字,一个不是,相等自然会失败。这是因为其中一个字符串发出行间距,而另一个字符串仅演示其包含的格式。

解决这个平等问题的最佳方法是什么?我确实关心格式,例如方法结果中的新行,这是至关重要的。

代码:

string expected = @"Test\n\n\nEnd Test.";
string result = "Test\n\n\nEnd Test";

Console.WriteLine(expected);
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

输出:

  测试\n\n\n结束测试。
  测试


  结束测试

Wil*_*ler 5

前缀@告诉编译器完全按照写入的方式获取字符串。因此,它不会将\n字符格式化为回车符和换行符。

由于分配给结果变量的字符串没有相同的前缀,因此编译器会对其进行格式化。如果您想继续使用该@前缀,只需执行以下操作:

    string expected = @"Test


End Test";
Run Code Online (Sandbox Code Playgroud)

您必须将字符串中的回车符和换行符作为不可见字符输入。