C# 使用字符串插值将字符串转换为大写

C# 使用字符串插值将字符串转换为大写,c#,c#-6.0,C#,C# 6.0,我们是否可以使用字符串插值将字符串转换为大写,就像我们将其用于DateTime对象一样: var str = $"Current date is {DateTime.Now:MM-dd-yyyy}"; 在知道区域性/本地化不重要的情况下,是否有任何字符串格式修饰符可以在:之后传递以将字符串转换为大写 另外,我正在寻找一种不调用string.ToUpper或ToUpperInvariant方法的方法,我知道这些方法,我可以使用它们 我正在寻找一种“速记”方式,就像不写: DateTime.Now

我们是否可以使用字符串插值将字符串转换为大写,就像我们将其用于
DateTime
对象一样:

var str = $"Current date is {DateTime.Now:MM-dd-yyyy}";
在知道区域性/本地化不重要的情况下,是否有任何字符串格式修饰符可以在
之后传递以将字符串转换为大写


另外,我正在寻找一种不调用
string.ToUpper
ToUpperInvariant
方法的方法,我知道这些方法,我可以使用它们

我正在寻找一种“速记”方式,就像不写:

DateTime.Now.ToString("MM-dd-yyyy")
你改写:

$"Current date is {DateTime.Now:MM-dd-yyyy}";
如果有这样的事情,那就太棒了:
{somekindOfString:U}

给定,不。因为您要做的是操纵字符串大小写,而不是日期时间格式化,这是有意义的


对于字符串插值快速格式,您希望要格式化的对象实现接口,而不是
string
类型。

如前所述,您需要的不是DateTime方法,而是string方法

从教学角度讲,我会这样做:

string dt=DateTime.Now.ToString(“MM-dd-yyyy”);
WriteLine($“当前日期为{dt}”.ToUpperInvariant());
如果您想知道为什么是toUpper(),而不是toUpper():


这是因为我们不会考虑OcAL文化(<)/P> < P>字符串插值基本上使用<代码> String。格式化(…)<代码>,使用<代码>()如果对象实现了接口

System.ifformattable
,则使用方法
ToString(字符串格式,IFormatProvider formatProvider)

我编写了一个示例应用程序来测试它

你可以打电话

MyClass mc = new MyClass();
Console.WriteLine($"myclass: {mc:MyParams}");
结果是什么

myclass: I am called. format: MyParams

因此,您可以对自定义参数使用字符串插值,但不能将其用于
系统。字符串
-对象。

格式修饰符控制如何将值转换为字符串。字符串已经是字符串了,所以它们没有
string.ToString(字符串格式,IFormatProvider formatProvider)
只是忽略
格式
——您无法传递任何会以任何方式影响字符串格式的内容。这里:@usr4217我知道我能做到这一点,我在寻找一种速记方法,就像代替
DateTime.Now.ToString(“MM-dd-yyyy”)
你使用
{DateTime.Now:MM-dd-yyyyy}
这个问题是什么?大写字符串不是
string
的格式,它是
char
数组,包含与小写
char
[s]不同的字符。这就像你问你能不能用
string.Format()
@MexicMexicalian Downvoting向
DateTime
对象添加天数一样。Downvoting不是为了表明问题违反了一些社区标准,而是为了表明问题没有显示任何研究成果,它不清楚,没有用处,没有主题等。“另外,我正在寻找一种不调用
string.ToUpper
方法的方法,我知道这个方法,我可以使用它“我认为这同样适用于
toupper
。Eeeehm,这是23分钟前编辑成的问题。无论如何,你的答案根本不适用。我编辑了这个问题,明确地添加了这一部分,我的问题中正好提到了@HimBromBeere的引用。但我认为这还不够清楚。尽管这部分清楚地解释了我要找的内容:“是否有任何字符串格式修饰符可以在:之后传递,以便将字符串转换为大写,但要知道区域性/本地化并不重要?”
myclass: I am called. format: MyParams