.net的字符串插值,格式化字符串

之前一直用老版本的.net,那时候基本都是string.Format(),最近用了下新版本的还有dotnet core2.0

发现有了种新的插值方法,或者叫格式化方法。就是用$"..."的方式实现直接插值的方法,这样就不用老formatter,而且更直观。

我举个例子 

            string who = "I";
            string where = "in the office";
            DateTime when = DateTime.Now;
            string things = "write code";

            Console.WriteLine($"{who} {things} {where} at {when:yyyy-MM-dd} {(when.Hour > 12 ? "pm" : "am")}");

输出为: I write code in the office at 2018-05-28 am

这种方式可以在字符串中带入变量,并且可以格式化,还可以进行简单的表达式。

这三种具体的实现方式,首先要在字符串头加$

1.如果直接填入变量的花需要一个大括号{varName} 里面直接写上变量名

2.如果要格式化一个变量,就如DateTime,需要{varName:Formatter},在变量名后面加一个" : "冒号,后面写格式化的字符串

3.表达式,需要在{}中加个(),在()中写表达式,当然不一定三段表达式,加减乘除也可以,其他我还没有试。

注意 如果要在$插值字符串中写"{"或"}"的话,需要写成"{{"或"}}"。

下面是官方文档,这个更全一些:

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/interpolated

其实官方的更好,我是一开始找半天这个文档,不知道叫插值表达式,一直没找到,所以写篇文章记录下,也避免走弯路。

原文地址:https://www.cnblogs.com/stupidanimal/p/9098680.html