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";
OS固有の行末が気になる場合は、次を使用してFormat
ください。
var result = String.Format("one{0}two", Environment.NewLine);
(まあ、「うるさい」という言葉は正しい言葉ではありません。テキストファイルを扱う場合、レガシーソフトウェアを扱う場合、OS固有の行末が望まれるか、必要になることさえあります。)
「ベスト」は非常にオープンエンドポイントです。
あなたは後ですか:
これらはすべて、何かを行うための「最良の」方法に関して大きな違いをもたらします。
私はそれがあなたが必要とするものに依存すると思います...
しかし、それを単純化するために、私は次のようにします。
var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();
しかし、私たちはあなたがそれを何のために必要としているのかわからないので。より良いヒントを与えるのはかなり難しいです
ソースコードに大きな文字列を定義しないでください。外部テキストファイルで定義する必要があります。
string s = File.OpenText("myfile.txt").ReadToEnd();
@codymanixが言ったことをリフして、長い複数行の文字列をリソースファイルに配置することができます。「ファイル」というテキストがDLL/EXEに含まれるため、特定の展開シナリオではこれが簡単になります。
複数の行が必要な場合があります。私は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" ;