title author date CreateTime categories
C# 6.0 字符串 String Interpolation
lindexi
2018-08-10 19:16:52 +0800
2018-2-13 17:23:3 +0800
C#

本文主要: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

2018-8-10-C#-6.0-字符串-String-Interpolation的更多相关文章

  1. C# 6.0:String Interpolation

    在开发中经常需要对字符串进行格式化处理.我们一般使用String.Format()方法,它会将指定字符串中的每个格式项替换为相应对象的值的文本等效项.虽然这很普通,但有时会容易使人迷惑并造成错误.因为 ...

  2. Swift3.0 字符串(string)

    string常用的一些操作方式 //字符串 //1.初始化字符串 //1.1通过字面量赋值的方式初始化字符串 let tempStrig = "this is temp string&quo ...

  3. Swift 4.0 字符串(String)学习

    定义字符串常量(常量只有读操作) let lString = "constant" let lString1: String = "constant" 定义字符 ...

  4. python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

    #python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...

  5. [转]标准C++字符串string以及MFC6.0字符串CString的tokenize和split函数

    标准字符串的方法: /******************************************** the tokenize function for std::string ****** ...

  6. 如果不空null并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。 int i = 0; i!=''。 mybatis中会返回tr

    mybatis 参数为Integer型数据并赋值0时,有这样一个问题: mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被mybatis判断为空,因此不执行< ...

  7. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  8. Java入门篇(五)——字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  9. 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)

    目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...

  10. C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)

    在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...

随机推荐

  1. bzoj1295 最长距离

    Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...

  2. vagrant 安装 ubuntu

    安装版本: ubuntu  trusty64(14.04) step1: 安装vagrant,vbox step2: 下载box文件(官网http://www.vagrantbox.es/) http ...

  3. Ubuntu18.04 systemd开机自启

    本文是该文的整理版. Ubuntu18.04不再使用initd管理系统,改用systemd.为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步: 1.systemd默认读取/ ...

  4. python元组和range

    1.元组 1)元组介绍 元组: 俗称不可变的列表.⼜被成为只读列表, 元组也是python的基本数据类型之⼀, ⽤⼩括号括起来, ⾥⾯可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. ...

  5. iptables 累计(Accounting)

    对於每一条规则,核心各自设置两个专属的计数器,用于累计符合该条件的封包数,以及这些封包的总位元组数.这两项资讯可用於统计网路用量. 举例来說,假设有一台Internet闸道器路,eth0接内部网络,e ...

  6. @noi.ac - 441@ 你天天努力

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 你天天努力,还是比不上小牛,因为小牛在家中套路.于是你决定去拜访 ...

  7. win10 + 独显 + Anaconda3 + tensorflow_gpu1.13 安装教程(跑bert模型)

    这里面有很多坑,最大的坑是发现各方面都装好了结果报错  Loaded runtime CuDNN library: 7.3.1 but source was compiled with: 7.4.1, ...

  8. iptables禁止强制访问指定的站点

    要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则: 1. 打开 ...

  9. Python--day25--接口类多继承

  10. Nutch2.3 编译

    $ antBuildfile: build.xmlTrying to override old definition of task javac ivy-probe-antlib: ivy-downl ...