簡體   English   中英

創建多行字符串的最佳語法

[英]Best syntax to create multi-line string

在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);

(好吧,“ fussy”不是正確的詞:在處理文本文件時,在處理舊版軟件時,通常需要甚至什至有必要使用特定於操作系統的行尾。)

“最佳”是一個非常開放的終點。

你在追尋:

  • 代碼性能
  • 編碼器可以寫的速度
  • 另一個程序員能夠輕松理解的能力
  • 另一個編碼器可以輕松修改它的能力

所有這些對於做某事的“最佳”方式都有很大的不同。

我會說這取決於您的需求...

但是為了簡化它,我可以使用:

var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();

但是由於我們不知道您需要什么。 很難給出更好的提示

您不應在源代碼中定義大字符串。 您應該在一個外部文本文件中定義它:

string s = File.OpenText("myfile.txt").ReadToEnd();

擺脫@codymanix所說的 ,您可以將長的多行字符串放在資源文件中。 對於某些部署方案,這可能會更容易,因為文本“文件”將包含在DLL / EXE中。

嗯,怎么樣:

string s = 
  "abc\n" + 
  "def\n" ;

有時您需要多個線路。 我使用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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM