簡體   English   中英

如何在C#中的常量中包含換行符

[英]How can I include a newline in a constant in C#

我有代碼在注冊時向用戶發送電子郵件:

await UserManager.SendEmailAsync(2, "Confirm your account", 
                "Please confirm your account by clicking this link: <a href=\"www.cnn.com\">link</a>");

這有效,但我想做更高級的事情,我看到很多模板。 但是,所有模板都至少有100行,每行后都有換行符。 這是我嘗試添加一個新行時的示例。

await UserManager.SendEmailAsync(2, "Confirm your account", 
            "Please confirm your account by clicking this link: 

            <a href=\"www.cnn.com\">link</a>");

一旦我有一個新的行,然后我收到一條消息,說我不能在常量中包含一個新行。

任何人都可以提出另一種方法,我可以包括這樣做嗎?

這里有三個問題。 首先,如果你有很多文本,你不應該直接在源代碼中包含它。 對於可本地化的小文本,您可以使用resx / resources文件 - Visual Studio將為您提供網格,以便您可以為特定資源名稱等指定文本。

但是,對於大量文本,我強烈考慮創建一個嵌入到程序集中的.txt文件,並使用Assembly.GetManifestResourceStream讀取。 編輯文本文件要比管理大塊字符串文字容易得多。

然而,答案的其余部分解決了您實際問過的關於字符串文字的問題。

第二是在字符串中進行換行,可以通過直接使用轉義序列來完成:

await UserManager.SendEmailAsync(2, "Confirm your account", 
    "Please confirm your account by clicking this link:\r\n<a href=\"www.cnn.com\">link</a>");

(這里\\r\\n是一個回車和換行符。有時你可能只需要\\r\\n 。它取決於上下文。)

或逐字字符串文字:

await UserManager.SendEmailAsync(2, "Confirm your account", 
    @"Please confirm your account by clicking this link:
      <a href=""www.cnn.com"">link</a>");

請注意,在逐字字符串文字中,您需要通過加倍來引用雙引號,因為反斜杠只是反斜杠。

但這只會讓你在HTML中有一個換行符。 如果您嘗試在顯示的文本中獲取換行符,則應使用HTML。 例如,您可以使用:

await UserManager.SendEmailAsync(2, "Confirm your account", 
    "Please confirm your account by clicking this link:<br /><a href=\"www.cnn.com\">link</a>");

...但我收集的<br>標簽大多不受歡迎 - 你應該看看控制HTML布局的其他方法。 請記住,HTML本身的換行符不太可能與您的頁面相關。

使用\\n 這是新行的轉義序列。

您也可以使用Environment.NewLine

  1. 解決方案不好,但比現在更好:
var msg="Please confirm your account by clicking this link:\n"
    + "\n"
    + @"link"+"\n";
  1. 正確的方法:將您的字符串存儲在資源文件,文本文件或任何其他文件中。

您可以在字符串中使用\\n內聯來表示新行:

await UserManager.SendEmailAsync(2, "Confirm your account", 
            "Please confirm your account by clicking this link:\n\n<a href=\"www.cnn.com\">link</a>");

或者,如果您要發送大量文本可能會更好,您可以使用StringBuilder構建文本行,然后將其寫入您的方法。

var builder = new StringBuilder();
builder.AppendLine("Please confirm your account by clicking this link:");
builder.AppendLine("<a href=\"www.cnn.com\">link</a>")

await UserManager.SendEmailAsync(2, "Confirm your account", builder.ToString());

暫無
暫無

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

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