c# - 在 C#6 中使用命名参数进行字符串插值

标签 c# asp.net asp.net-mvc

假设我的数据库中存储了一个元数据资源字符串,它将像这样返回:

var pageTitle = "Shop the latest {category1} Designer {category2} {category3} at www.abc.com";

我想用变量 values 替换 {placeholders};

var category1 = "womenswear";
var category2 = "dresses";
var category3 = "cocktail dresses";

我试过了,没有运气;

var newTitle = $"pageTitle, category1, category2, category3";
var newTitle = $(pageTitle, category1, category2, category3);

我知道我可以使用具有性能开销的 string.Replace()。有谁知道如何使用最新的 C# 字符串插值有效地完成此操作?

最佳答案

你不能在这里使用字符串插值。字符串插值是string.Format的编译时重写方法,这是你应该使用的解决方案:

var newTitle = string.Format("{0}, {1}, {2}, {3}", pageTitle, category1, category2, category3);

或者string.Join:

var newTitle - string.Join(", ", new string[] { pageTitle, category1, category2, category3 });

由于您是从数据库加载的,因此在您的情况下继续使用 string.Replace 可能会更好。

关于c# - 在 C#6 中使用命名参数进行字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745164/

相关文章:

c# - MonoTouch BackgroundWorker 调用 TextView 不工作

asp.net - 在 ASP.NET MVC2 中运行耗时任务的可靠方法是什么

asp.net - 为什么会在页面加载前后调用Owin Startup类的Configuration方法?

asp.net-mvc - 在 Visual Studio 2015 RC 中添加 View

javascript - 在 ASP.Net Release模式下提供内容时,Chrome 呈现不同?

c# - 如何让 Xamarin ListView 在不调整屏幕大小的情况下自动调整其行的大小?

c# - 无法将类型为 'OpenQA.Selenium.Remote.RemoteWebElement' 的对象转换为类型 'System.Collections.Generic.Di ctionary` 2[System.String,System.Object]

c# - 我的功能是否违反了 SRP 或其他最佳实践?

c# - 从 MembershipUserCollection 获取单个 MembershipUser

javascript - jquery 幻灯片使用图像幻灯片容器添加内容