.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

时间: 2024-10-16 05:08:47

.net的字符串插值,格式化字符串的相关文章

CultureInfo提供有关特定区域性的信息,包括区域性的名称、语言、简称、书写系统、使用的日历以及对日期和排序字符串的格式化字符串设置。

CultureInfo类里包括区域性标识.区域性名称.语言代码(三字母).RFC 4646 标准标识.本地化区域性名称及英文名称等等信息.里面每一个区域信息里, 1.DateTimeFormatInfo类介绍的时间格式化字符串.星期.月份.长格式.短格式: 2.NumberFormat类介绍数字.货币的正负.百分比符号.正负无穷大等等: 3.TextInfo类介绍书写方向.区域标识符.分隔字符串等等: 语言 英文名称 区域名称 LCID 本地名称 语言简称 货币符号 阿拉伯语          

python模板字符串和格式化字符串

模板字符串:用string模块里的Template Template()里面把字符串中某个值用设置变量${key}的方式先写好,然后在substitute()的方式把变量用其他值代替,就完成了字符串的替换 >>> from string import Template >>> a=Template('would it be the ${key1} when we meet in ${key2}') >>> a.substitute(key1='same

Scala字符串插值 - StringContext

翻译自:STRING INTERPOLATION 简介 自2.10.0版本开始,Scala提供了一种新的机制来根据数据生成字符串:字符串插值.字符串插值允许使用者将变量引用直接插入处理过的字面字符中.如下例: val name="James" println(s"Hello,$name")//Hello,James 在上例中, s”Hello,$name” 是待处理字符串字面,编译器会对它做额外的工作.待处理字符串字面通过“号前的字符来标示(例如:上例中是s).字符

格式化字符串攻击

什么是格式化字符串攻击? format string attack https://www.owasp.org/index.php/Format_string_attack 首先攻击发生在 格式化字符串所涉及的函数(例如 printf), 其次用户输入字符串提交后作为格式化字符串参数执行. 攻击者可以执行代码, 读取栈空间. 写栈空间. 导致进行段错误(segment fault),或者导致其他的威胁到计算机安全和稳定性的新的行为. 举例子 正确例子,其中 "Bob %%x %%x"

.NET中DateTime.Now.ToString的格式化字符串

.NET中DateTime.Now.ToString显示毫秒:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") DateTime.Now.ToString的其他格式化字符串:   格式化字符串 释义 示例 D long date Thursday, 10 April 2008 d short date 04/10/2008 F full date long Thursday, 10 April 2008 06:30:00 f full d

Python自学之旅 #新手#MacBook #《“笨办法”学Python》#第六章:常用的简易Python命令、符号、代码、格式化字符串

第六章:常用的简易Python命令.符号.代码.字符串 <“笨办法”学Python>这本书中,确实用了较多篇幅来介绍Python的一些常用简单的命令.符号.代码和字符串等,对于像我这样的自学新手,真的是非常棒,因为它们可以帮我建立接着学下去的信心和兴趣.但我在这个系列的博客当中,不打算写的这么精细,首先因为这不符合我写博的初衷和习惯,其次因为我不打算靠这写书来挣钱,最后因为我确实没有那个实力去挖掘简单东西中更深奥复杂的应用.所以,我写的这个博客,只适合像我这样的自学新手,如果想要成为大神,还是

yield生成器及字符串的格式化

一.生成器 1 def ran(): 2 print('Hello world') 3 yield 'F1' 4 5 print('Hey there!') 6 yield 'F2' 7 8 print('goodbye') 9 yield 'F3' 10 11 ret = ran() # ran()称为生成器函数,ret才是生成器,仅仅具有一种生成能力,函数内部要有关键字yield 12 print(ret) 13 14 res = ret.__next__() #对生成器进行循环操作,遇到y

格式化字符串攻击原理及示例

一.类printf函数簇实现原理 类printf函数的最大的特点就是,在函数定义的时候无法知道函数实参的数目和类型. 对于这种情况,可以使用省略号指定参数表. 带有省略号的函数定义中,参数表分为两部分,前半部分是确定个数.确定类型的参数,第二部分就是省略号,代表数目和类型都不确定的参数表,省略号参数表中参数的个数和参数的类型是事先的约定计算出来的,每个实参的地址(指针)是根据确定参数表中最后一个实参的地址算出来的. 这里涉及到函数调用时的栈操作.函数栈的栈底是高地址,栈顶是底地址.在函数调用 时

字符串:格式化

一.字符串格式化的format方法 format方法接受位置参数和关键字参数 #位置参数 >>> "{0} love {1}".format('I','you') 'I love you' #关键字参数 >>> "{a} love {b}".format(a='I',b='you') 'I love you' #位置参数和关键词参数可以混用,但是位置参数必须在关键词参数之前 >>> "{0} love

编写高质量代码改善C#程序的157个建议——建议13: 为类型输出格式化字符串

建议13: 为类型输出格式化字符串 有两种方法可以为类型提供格式化的字符串输出.一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable.这对类型来 说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求.更多的时候,类型的使用者需为类型自定义格式化器,这就是第二种方法,也是最灵活 多变的方法,可以根据需求的变化为类型提供多个格式化器.下面就来详细介绍这两种方法. 最简单的字符串输出是为类型重写ToString方法,如果没有为类型重写该方法,默认会调用Obj