当前位置: 首页 > 科技观察

如何在C#中使用内插字符串?

时间:2023-03-14 18:09:54 科技观察

本文转载自微信公众号《码农读书》,作者JoydipKanjilal。转载本文请联系码农阅读公众号。字符串插值是一种将表达式插入字符串字面量的技术,也称为变量替换、变量插值、变量扩展等,是将一个或多个字符串替换为多个占位符对应值的处理方法。字符串插值被许多编程语言使用,例如:Python、Perl、PHP、Ruby、Java、Scala等。C#是在第六版中引入的。在本文中,我们将讨论如何在C#字符串插值中使用它。字符串插值的结构从语言层面来说,字符串插值是一个包含插值表达式的字符串,这个字符串中的某个插值值最终会被一个实际的值代替。插值字符串以$开头,$和字符串字面量之间不能有空格。下面的语言展示了插值表达式的语法结构。{[,][:]}请注意,方括号中的元素是可选的。interpolationExpression元素表示生成结果或输出字符串的表达式。alignment表示常量表达式,其值指定在计算表达式时必须包含在表达式结果的字符串表示中的最少字符数。如果值为正,则字符串表示是右对齐的;如果该值为负,则字符串表示形式是左对齐的。formatString,顾名思义,代表一个格式化字符串。创建字符串插值使用字符串插值时,必须先在字符串前插入一个$字符,而不是单独格式化每个元素。插值表达式必须括在左大括号和右大括号({})中。下面的代码片段显示了如何使用字符串插值将字符串替换为文本值。varname="Joydip";Console.WriteLine($"你好,{name}");接下来考虑以下代码片段。stringproductName="LenovoLegionLaptop";intcounter=5;stringoutput=string.Format("今天,{0}已售出{1}次。",productName,counter);运行代码后,输出内容如下:Today,LenovoLegionLaptophasbeensold5times.现在用插值法修改一下。参考结果如下:stringproductName="LenovoLegionLaptop";intcounter=5;stringoutput=$"Today,{productName},hasbeensold{counter}times.";插值字符串必须能够编译确定插值字符串似乎是创建字符串模板的一种简单方法,但您必须意识到插值字符串只是C#中的编译时语法糖,换句话说,您的插值字符串必须在在编译时它是一个普通的字符串文字。在插件字符串中使用特殊字符接下来让我们学习如何在插值字符串中使用特殊字符,考虑以下示例。stringproductName="LenovoLegionLaptop";doubleprice=1600.00;Console.WriteLine($"Thecustomersasked,\"Whatisthepriceof{productName}?\"");Console.WriteLine($"Thesalesmanrepliedsayingthatthepriceof{productName}is${price}.");可以看到,如果包含特殊字符,必须用\转义。字符串插值允许我们向字符串中插入一个值,也可以控制最终生成的输出。从语言层面来说,字符串插值最后会变成String.Format,反之,如果字符串插值是IFormattable或FormattableString类型,那么编译器会调用FormattableStringFactory.Create方法。理论上,字符串插值会略微降低程序的性能,但最近的.NET版本已经做了很大的优化,字符串插值带来的灵活性远远超过了这种所谓的性能。