在 C# 中创建多行字符串的最佳方法是什么?
我知道以下方法:
使用 StringBuilder
var result = new StringBuilder().AppendLine("one").AppenLine("two").ToString()
看起来太冗长了。
使用 @
var result = @"one
two"
看起来丑陋且格式错误。
那这个呢:
var result = string.Join(Environment.NewLine, new string[]{
"one",
"two"
});
这有点痛苦,而且可能有点矫枉过正,但它提供了在代码中保留行分隔的可能性。
为了稍微改进一下,您可以使用辅助方法:
static string MultiLine(params string[] args) {
return string.Join(Environment.NewLine, args);
}
static void Main(string[] args) {
var result = MultiLine(
"one",
"two"
);
}
那这个呢?
var result = "one\ntwo";
如果您对特定于操作系统的行尾很挑剔,请使用Format
:
var result = String.Format("one{0}two", Environment.NewLine);
(好吧,“挑剔”不是正确的词:在处理文本文件时,在处理遗留软件时,通常需要甚至需要特定于操作系统的行结尾。)
“最佳”是一个非常开放的观点。
你在追求:
所有这些对于做某事的“最佳”方式都有很大的不同。
我会说这取决于你需要什么......
但为了简化它,我会选择:
var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();
但是因为我们不知道你需要它做什么。很难给出更好的提示
摆脱@codymanix 所说的内容,您可以将长多行字符串放在资源文件中。这对于某些部署方案可能更容易,因为文本“文件”将包含在您的 DLL/EXE 中。
您不应在源代码中定义大字符串。您应该在外部文本文件中定义它:
string s = File.OpenText("myfile.txt").ReadToEnd();
有时你需要不止一条线。我使用 Environment.NewLine 但我把它放在一个方法中来相乘。:)
private string newLines(int multiplier)
{
StringBuilder newlines = new StringBuilder();
for (int i = 0; i < multiplier; i++)
newlines.Append(Environment.NewLine);
return newlines.ToString();
}
嗯,怎么样:
string s =
"abc\n" +
"def\n" ;