首页 > 解决方案 > 如何在 CultureInfo 中使用字符串插值?

问题描述

我正在围绕 c# 中的格式进行一些测试,并希望在使用 US CultureInfo (System.Globalization) 的同时进行一些字符串插值。没有字符串插值,这段代码给了我正确的日期格式:

DateTime date = new DateTime(2013, 4, 22);

CultureInfo provider = new CultureInfo("en-US");

Console.WriteLine("Choosen date is: " + date.ToString("d", provider));

这将以美国格式显示日期: 选择的日期是: 2013 年 4 月 22 日

使用字符串插值时如何执行此操作?这是我使用 String.Format 失败的尝试之一:

CultureInfo provider = new CultureInfo("en-US");

Console.WriteLine(String.Format(provider, $"Choosen date is: {date:d}"));

这以我的本地格式显示日期: 选择的日期是:22.04.2013

任何建议将不胜感激。

标签: c#

解决方案


使用FormattableString

Console.WriteLine(
    ((FormattableString)$"Choosen date is: {date:d}")
      .ToString(provider)
);

Tor 的答案比这更简单,除非插值字符串中有多个变量。FormattableString 允许一次性完成多种格式。

这是 C# 10 的方式,来自下面的aepot

string.Create(provider, $"Choosen date is: {date:d}")

推荐阅读