在C#中创建多行字符串的最佳方法是什么?
我知道以下方法:
var result = new StringBuilder().AppendLine("one").AppenLine("two").ToString()
看起来太冗长了。
var result = @"one
two"
看起来很丑,格式很差。
答案 0 :(得分:21)
这个怎么样:
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"
);
}
答案 1 :(得分:11)
这个怎么样?
var result = "one\ntwo";
如果您对特定于操作系统的行结尾感到挑剔,请使用Format
:
var result = String.Format("one{0}two", Environment.NewLine);
(好吧,“挑剔”不是正确的词:在处理文本文件时,在处理传统软件时,通常需要或甚至需要特定于操作系统的行结尾。)
答案 2 :(得分:3)
“最佳”是一个非常开放的观点。
你好吗:
所有这些对于“最佳”做事方式都有很大的不同。
答案 3 :(得分:2)
我说这取决于你需要什么...
但为了简化它,我会选择:
var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();
但是因为我们不知道你需要什么。提供更好的提示非常困难
答案 4 :(得分:1)
您不应在源代码中定义大字符串。 您应该在外部文本文件中定义它:
string s = File.OpenText("myfile.txt").ReadToEnd();
答案 5 :(得分:1)
关闭what @codymanix said,您可以将长多行字符串放在资源文件中。对于某些部署方案,这可能更容易,因为文本“文件”将包含在DLL / EXE中。
答案 6 :(得分:1)
string s =
"abc\n" +
"def\n" ;
答案 7 :(得分:0)
有时您需要不止一行。 我使用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();
}