前面的數據類型介紹中,有提到字符串是屬于引用數據的一種,也是編程中最常用的數據類型之一。下面來詳細學習記錄一下關于字符串的內容。
1、創(chuàng)建字符串
字符串是引用數據類型,聲明變量時,需要使用 string 關鍵字。
例如:
string str = "This is a string!";
值得注意的是,在 C# 中,字符串類型的變量一定是用雙引號包裹的一串字符。而字符類型(char)使用單引號包裹起來的一個字符。
2、拼接字符串
在 C# 中拼接字符串的方法有很多,下面列舉幾種比較常見的拼接方式:
(1)使用拼接符號
可以直接使用 + 算術運算符,對字符串進行連接。
string s1 = "Hello";
string s2 = "World";
string s3 = s1 + s2;
Console.WriteLine(s3); // HelloWorld
字符串不僅是字符串之間可以拼接,而且可以和所有的數據類型進行拼接。這是因為所有數據類型都繼承自 Object 這個基類,而 Object 中又有 toString 方法。因此,只要子類不重寫這個方法,理論上來說,所有類型都可以轉換為字符串類型。
string s = "asdf";
int i = 3;
float f = 3.2f;
bool b = true;
Console.WriteLine(s + i); // asdf3
Console.WriteLine(s + f); // asdf3.2
Console.WriteLine(s + b); // asdftrue
(2)string.Concat
調用 string.Concat() 方法,傳入參數即可以完成拼接字符串。參數的個數至少是兩個。
string s1 = "I ";
string s2 = "\'m ";
int i = 18;
string s = string.Concat(s1, s2, i);
Console.WriteLine(s); // I 'm 18
(3)占位符拼接
string name = "小明";
int age = 22;
string s =string.Format("{0}今年{1}歲", name, age);
Console.WriteLine(s);
// 小明今年22歲
(4)$方式拼接
C# 6.0開始出現的 $ 方式,也可以用來拼接字符串。實際上其實就是 string.Format 的簡化版。
string name = "小剛";
int num = 3;
string s = $"{name}蓋了{num}米高的樓層。";
Console.WriteLine(s);
// 小剛蓋了3米高的樓層。
3、比較字符串
字符串也是可以進行比較的,比較方法有如下幾種:
(1)使用比較運算符
string s1 = "Woooo";
string s2 = "Wooooa";
bool b = s1 == s2;
// false
(2)string.Compare
string.Compare(s1, s2) 對傳入的兩個字符串的各個字符進行比較,如果每個字符的 Unicode 編碼值一樣,那么將會返回 0;如果比較到某個字符的編碼值不一樣,前者大則立刻返回 1;否則就返回 -1.
string s1 = "abb";
string s2 = "abc";
string s3 = "caa";
string s4 = "abc";
int n1 = string.Compare(s1, s2); // -1
int n2 = string.Compare(s3, s1); // 1
int n3 = string.Compare(s2, s4); // 0
該方法,還可以傳入第三個參數,布爾值類型。當布爾參數為 true 的時候,將不會區(qū)分大小寫。
string s1 = "abc";
string s2 = "ABC";
int n1 = string.Compare(s1, s2); // -1
int n2 = string.Compare(s1, s2, true); // 0
(3) string.Equals
sting.Equals(s1, s2) 和上面的 string.Compare 很相似,不同的是前者返回的是 true 或者 false。
string s1 = "abc";
string s2 = "bbc";
string s3 = "aac";
string s4 = "abc";
bool b1 = string.Equals(s1, s2); // false
bool b2 = string.Equals(s1, s3); // false
bool b3 = string.Equals(s1, s4); // true
4、占位符
在上面已經有占位符的使用展示。
占位符,顧名思義,就是提前給你占位置,并標好標記。等人來,按照標記好的順序坐下。
int n1 = 1;
int n2 = 2;
int n3 = 3;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2, n3);
// 第2個位置,第1個位置,第3個位置
那么肯定會有這樣的一種情況,來的路上突然有個人要加進來,但是位置提前安排了,結果不夠坐,會發(fā)生什么事情?
int n1 = 1;
int n2 = 2;
int n3 = 3;
int n4 = 4;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2, n3, n4);
// 第2個位置,第1個位置,第3個位置
很顯然想要投機取巧的人,只配站著。
如果這個人不道德的話,不僅中途加入,還插在了第三個人前頭,那么他成功了。
int n1 = 1;
int n2 = 2;
int n3 = 3;
int n4 = 4;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2, n4, n3);
// 第2個位置,第1個位置,第4個位置
被插隊的人就很遺憾只能站著了!
有時候主辦方很聰明,料到有些人會不請自來,這時候會多安排一些個位置??山Y果,人來少了,位置還多余了,會發(fā)生什么呢?
int n1 = 1;
int n2 = 2;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2);
來的人就發(fā)現還有這么多位置沒有人,看來這主辦方不行啊,這臺戲肯定不好看,散伙散伙!
從上面可以得出,位置可以少,但不能多;值可以多,但一定不能少,否則就會拋出以上這樣的異常。
5、轉義字符
轉移符號 \
轉義字符即轉移符號加上特定的字符組成的一個特殊字符,可以在編程表示一些內容:
轉義字符 | 作用 |
---|---|
\' | 在字符串中顯示單引號 |
\" | 在字符串中顯示雙引號 |
\t | 制表符,相當于 tab 鍵 |
\n | 換行,相當于敲下了回車鍵 |
\\ | 在字符串中顯示斜杠符號 |
string s = "小明說:\"我很帥!\"\n小紅說:\"\t\\yue\\\t\"";
Console.WriteLine(s);
6、總結
復盤一下上面提到的一些內容:
(1)字符串是引用數據類型,聲明字符串變量時,需要使用 string。
(2)拼接字符串的方法有:拼接符號、Concat 方法、占位符使用、$方法使用
(3)比較字符串的方法有:比較運算符 ==、Compare 方法、Equals 方法。
(4)占位符:位置可少不可多,值可多不可少。
(5)常用轉義字符的介紹。這里再提一句,轉義字符是個字符,雖然它看著是用了兩個字符組成的,但實際上它就只是一個字符。
關于字符串的學習記錄,到這里就已經結束了。