C# 6.0 字符串 String Interpolation

本文主要:C# 6.0 新特性 String Interpolation,一些比较少知道的知识。 本文内容有:字符串新特性的一般使用、格式化字符串、保留小数点、判断字符串

原文发在csdn http://blog.csdn.net/lindexi_gd/article/details/49716741

本文做了一些修改。

“hello $world”的格式化字符串是指把字符串中一个单词,以一个标示开头。可以代换为单词所指的变量。 这个在jq有,而C#string的格式只能用格式的字符占位符,格式的字符占位符都是数字,这样多了很容易混,好多我都出现了,拷贝代码,然后没有排好数字,漏了一个数字,这样出现了错误。 string.Format("这里有很长字符串{0}{2}" , "Hello" , "csdn");

而看到一个大神实现了类似jQueryStringFormat的扩展string,觉得C#内置有一个方法:

            var csdn = "csdn";
            var result = $"Hello {csdn}";
            Console.Write(result);

会输出

通过$开头字符串,中间{}作为变量名,可以把字符串代换为变量的字符。

这就是 C# 6.0 新特性: String Interpolation

但是 String Interpolation 如何输入一定长度的字符串?

我看到了堆栈炸有大神问了一个问题,刚好我在做的编码工具也遇到命令行输入的不好看,需要格式化,所以就去找下方法。

后来发现,可以在ToString放参数的,把参数写在:后就可以传进去。

        static void Main(string[] args)
        {
            string csdn = "csdn";
            double n = 1.1315;
            string str = $"Hello {csdn} 新特性";
            Console.WriteLine(str);

            str = $"Hello {csdn} 新特性 {n}";
            Console.WriteLine(str);

            str = $"Hello {csdn} 新特性 {n:1.##}";
            Console.WriteLine(str);

            //不生效
            str = $"Hello {csdn:10} 新特性 {n:1.##}";
            Console.WriteLine(str);
        }

如果要指定一个字符串显示的长度,不够长度填充空格,使用,

            str = $"Hello {csdn,10} 新特性 {n:1.##}";
            Console.WriteLine(str);

关于字符串长度的使用,参见:https://msdn.microsoft.com/en-us/library/dn961160.aspx

可以看到上面的长度是添加在左边,如果要添加在右边?可以使用字符串函数

            str = $"Hello {csdn.PadRight(10)} 新特性 {n:1.##}";
            Console.WriteLine(str);

当然,可以在字符串使用判断。

            str = $"Hello {(csdn =="csdn"?"csdn":"lindexi")} 新特性 {n:1.##}";
            Console.WriteLine(str);

代码传到了 csdn 下载:http://download.csdn.net/detail/lindexi_gd/9749065

还有代码放在 code.csdn

代码:https://code.csdn.net/lindexi_gd/lindexi_gd/tree/master/hellow_$csdn

参考:http://www.cnblogs.com/isaboy/p/4945045.html

更多特性参见 http://www.cnblogs.com/wolf-sun/p/5168217.html


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Python3 与 C# 基础语法对比(Function专栏-新排版)

在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master

19630
来自专栏魂祭心

原 c#中闭包的实现方法

32960
来自专栏菩提树下的杨过

温故而知新:new与override的差异以及virtual方法与abstract方法的区别

先直接看代码吧: using System; namespace ConsoleApplication1 { class Program { ...

21380
来自专栏大内老A

yield在WCF中的错误使用——99%的开发人员都有可能犯的错误[下篇]

昨天写了《yield在WCF中的错误使用——99%的开发人员都有可能犯的错误[上篇]》,引起了一些讨论。关于yield关键字这个语法糖背后的原理(C#编译器将它...

20380
来自专栏牛客网

知识总结:Java集合对象排序1.List排序2.Set排序 3.Map排序

1.List排序 这个和数组的排序又不一样了。 其实Java针对数组和List的排序都有实现,对数组而言,你可以直接使用Arrays.sort,对于List和V...

1.3K100
来自专栏个人随笔

房上的猫:if选择结构

一.基本if结构: ? ?  1.定义:if选择结构是根据条件判断之后再做处理的一种语法结构!  2.逻辑:首先对条件进行判断   >如果为真,则执行代码块 ...

377120
来自专栏恰童鞋骚年

《C#图解教程》读书笔记之五:委托和事件

  (1)本质:持有一个或多个方法的对象;委托和典型的对象不同,执行委托实际上是执行它所“持有”的方法。如果从C++的角度来理解委托,可以将其理解为一个类型安全...

9620
来自专栏编程

Kotlin学习之高阶函数和Lambda表达式:闭包

Kotlin学习之高阶函数和Lambda表达式:闭包 一、闭包 闭包指Lambda表达式和匿名函数外部定义的局部变量,Kotlin支持Lambda表达式和匿名函...

230100
来自专栏Java 源码分析

Java8新特性

1.HashMap 首先就是对 java 的 HashMap 进行了修改,以前是通过 hashCode 方法来判断他们的地址值是否一样 ,如果相同的话再使用 e...

37440
来自专栏Create Sun

基础拾遗------接口详解

  接口定义了所有类继承接口时应遵循的契约。接口定义了 "要什么" ,派生类定义了 "怎么给" 。  引用CLR VIA C#(类和接口继承)   在Mi...

36180

扫码关注云+社区

领取腾讯云代金券