【C#冷知识系列】(二)关于字符串的冷知识
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【C#冷知识系列】(二)关于字符串的冷知识,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3398字,纯文字阅读大概需要5分钟。
内容图文
![【C#冷知识系列】(二)关于字符串的冷知识](/upload/InfoBanner/zyjiaocheng/841/ba8d8c11dbe048879f9650a281129824.jpg)
字符串忽略转义符
string?i?=?"sss\ssss";
string?i?=?@"sss\ssss";
输出:
sss"ssss
sss\ssss
模板字符串
string?j?=?$"i?is?{i}";?
//那么i的值就会被插入到字符串中。
这里不仅要知道可以这么用,更要知道为什么可以这么用:模板字符串或者叫插值字符串只是String.Format的一个语法糖,编译器会这样解析:
string?s1?=?"Hello";
string?s2?=?String.Format("Hello,?{0}",?s1);
注意:
如果想输出花括号,就写两个大括号
string?s1?=?"Hello";
Console.WriteLine($"{{s1}}");??//?输出?{s1}
Console.WriteLine($"{{{s1}}}");?//?输出?{Hello}
String类操作字符串的返回值
返回值一定是一个新的字符串,因为String类没有提供任何可以改变其内容的方法
//?这个知识告诉我们在C#中任何字符串的操作,要获得返回值都需要使用新的字符串进行接收的操作
string?i?=?"123";
string?j?=?i.Insert(0,?"hello");
输出:
i?123
j?hello123
StringBuilder
我们都知道在进行复杂的字符串操作的时候就要用到StringBuilder类,我们不太注意到的是:
StringBuilder工作方式高效但是功能受限,它只能完成文本中的 替换 追加 删除的工作。
下面是StringBuilder提供的主要方法:我们应该尽可能的在初始化的时候把容量设置为可能的最大长度以保证不需要重新分配内存,可以提高效率。下面是使用容量初始化StringBuilder的例子:
//?下面三个初始化都可以初始化一个StringBuilder
//?按照容量
StringBuilder?sb?=?new?StringBuilder(20);
//?使用字符串初始化
StringBuilder?sb1?=?new?StringBuilder("Hello");
//?使用字符串初始化同时指定容量
StringBuilder?sb2?=?new?StringBuilder("Hello",?20);
字符串格式化
格式化的语法
在模板字符串中要用冒号分割变量与格式化字符串
var?time?=?DateTime.Now;
Console.WriteLine($"{time:D}");???//?2018年12月5日
Console.WriteLine(time.ToString("D"));?//?2018年12月5日
内置的格式化
格式字符串 结果 n 2,440.012 有逗号分隔,有小数点 e 2.44e+003 指数表示法 x 9ad 十六进制 c $2,440.002 货币 //???????d:?6/15/2008
//???????D:?Sunday,?June?15,?2008
//???????f:?Sunday,?June?15,?2008?9:15?PM
//???????F:?Sunday,?June?15,?2008?9:15:07?PM
//???????g:?6/15/2008?9:15?PM
//???????G:?6/15/2008?9:15:07?PM
//???????m:?June?15
//???????o:?2008-06-15T21:15:07.0000000
//???????R:?Sun,?15?Jun?2008?21:15:07?GMT
//???????s:?2008-06-15T21:15:07
//???????t:?9:15?PM
//???????T:?9:15:07?PM
//???????u:?2008-06-15?21:15:07Z
//???????U:?Monday,?June?16,?2008?4:15:07?AM
//???????y:?June,?2008
//???????
//???????'h:mm:ss.ff?t':?9:15:07.00?P
//???????'d?MMM?yyyy':?15?Jun?2008
//???????'HH:mm:ss.f':?21:15:07.0
//???????'dd?MMM?HH:mm:ss':?15?Jun?21:15:07
//???????'\Mon\t\h\:?M':?Month:?6
//???????'HH:mm:ss.ffffzzz':?21:15:07.0000-07:00关于内置的格式化,如果大量经常使用的话,推荐点击这里下载微软提供的工具来帮助格式化。
日期的格式化
数字的格式化(格式化字符串不区分大小写)
自定义格式化
除了使用内置的格式化,我们还能自定义格式化字符串和格式化的结果,方法就是实现IFormattable接口,下面举个例子
定义:
public?class?Student?:?IFormattable
{
????public?string?FirstName?{?get;?set;?}
????public?string?LastName?{?get;?set;?}
????public?override?string?ToString()
????{
????????return?FirstName?+?"?"?+?LastName;
????}
????public?string?ToString(string?format)?=>?ToString(format,?null);?
????public?string?ToString(string?format,?IFormatProvider?formatProvider)
????{
????????switch?(format)
????????{
????????????case?"A":
????????????????return?ToString();
????????????case?"F":
????????????????return?FirstName;
????????????case?"L":
????????????????return?LastName;
????????????default:
????????????????throw?new?FormatException($"invaild?format?string?{format}");
????????}
????}
}
使用:
Student?stu?=?new?Student?{?FirstName?=?"First",?LastName?=?"Last"?};
Console.WriteLine(stu.ToString("F"));???//?输出?First
内容总结
以上是互联网集市为您收集整理的【C#冷知识系列】(二)关于字符串的冷知识全部内容,希望文章能够帮你解决【C#冷知识系列】(二)关于字符串的冷知识所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。