string i = "sss\ssss";
string i = @"sss\ssss";
輸出:
sss"ssss
sss\ssss
string j = $"i is {i}";
//那么i的值就會被插入到字符串中。
這里不僅要知道可以這么用,更要知道為什么可以這么用:模板字符串或者叫插值字符串只是String.Format的一個語法糖,編譯器會這樣解析:
成都創(chuàng)新互聯(lián)公司主營達(dá)川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),達(dá)川h5重慶小程序開發(fā)公司搭建,達(dá)川網(wǎng)站營銷推廣歡迎達(dá)川等地區(qū)企業(yè)咨詢
string s1 = "Hello";
string s2 = String.Format("Hello, {0}", s1);
注意:
如果想輸出花括號,就寫兩個大括號
string s1 = "Hello";
Console.WriteLine($"{{s1}}"); // 輸出 {s1}
Console.WriteLine($"{{{s1}}}"); // 輸出 {Hello}
返回值一定是一個新的字符串,因為String類沒有提供任何可以改變其內(nèi)容的方法
// 這個知識告訴我們在C#中任何字符串的操作,要獲得返回值都需要使用新的字符串進(jìn)行接收的操作
string i = "123";
string j = i.Insert(0, "hello");
輸出:
i 123
j hello123
我們都知道在進(jìn)行復(fù)雜的字符串操作的時候就要用到StringBuilder類,我們不太注意到的是:
StringBuilder工作方式高效但是功能受限,它只能完成文本中的 替換 追加 刪除的工作。
下面是StringBuilder提供的主要方法:
我們應(yīng)該盡可能的在初始化的時候把容量設(shè)置為可能的最大長度以保證不需要重新分配內(nèi)存,可以提高效率。下面是使用容量初始化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èi)置的格式化
格式字符串 | 結(jié)果 |
---|---|
n | 2,440.012 有逗號分隔,有小數(shù)點 |
e | 2.44e+003 指數(shù)表示法 |
x | 9ad 十六進(jìn)制 |
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
關(guān)于內(nèi)置的格式化,如果大量經(jīng)常使用的話,推薦點擊這里下載微軟提供的工具來幫助格式化。
日期的格式化
數(shù)字的格式化(格式化字符串不區(qū)分大小寫)
自定義格式化
除了使用內(nèi)置的格式化,我們還能自定義格式化字符串和格式化的結(jié)果,方法就是實現(xiàn)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#冷知識系列】(三)關(guān)于字符串的冷知識
網(wǎng)站路徑:http://aaarwkj.com/article24/igjece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、域名注冊、全網(wǎng)營銷推廣、App開發(fā)、面包屑導(dǎo)航、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)