gpt4 book ai didi

c# - 如何在 C# 中的常量中包含换行符

转载 作者:太空狗 更新时间:2023-10-29 19:52:20 24 4
gpt4 key购买 nike

我有在注册时向用户发送电子邮件消息的代码:

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 本身的换行符不太可能与您的页面相关。

关于c# - 如何在 C# 中的常量中包含换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com