App下載

C# 編程學習系列(八)字符串的使用

海氹有點甜 2021-12-16 14:37:38 瀏覽數(shù) (2766)
反饋

前面的數(shù)據(jù)類型介紹中,有提到字符串是屬于引用數(shù)據(jù)的一種,也是編程中最常用的數(shù)據(jù)類型之一。下面來詳細學習記錄一下關(guān)于字符串的內(nèi)容。

1、創(chuàng)建字符串

字符串是引用數(shù)據(jù)類型,聲明變量時,需要使用 string 關(guān)鍵字。

例如:

string str = "This is a string!";

值得注意的是,在 C# 中,字符串類型的變量一定是用雙引號包裹的一串字符。而字符類型(char)使用單引號包裹起來的一個字符。

2、拼接字符串

在 C# 中拼接字符串的方法有很多,下面列舉幾種比較常見的拼接方式:

(1)使用拼接符號

可以直接使用 + 算術(shù)運算符,對字符串進行連接。

string s1 = "Hello";
string s2 = "World";
string s3 = s1 + s2;
Console.WriteLine(s3); // HelloWorld

字符串不僅是字符串之間可以拼接,而且可以和所有的數(shù)據(jù)類型進行拼接。這是因為所有數(shù)據(jù)類型都繼承自 Object 這個基類,而 Object 中又有 toString 方法。因此,只要子類不重寫這個方法,理論上來說,所有類型都可以轉(zhuǎn)換為字符串類型。

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

調(diào)用 string.Concat() 方法,傳入?yún)?shù)即可以完成拼接字符串。參數(shù)的個數(shù)至少是兩個。

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開始出現(xiàn)的 $ 方式,也可以用來拼接字符串。實際上其實就是 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

該方法,還可以傳入第三個參數(shù),布爾值類型。當布爾參數(shù)為 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、占位符

在上面已經(jīng)有占位符的使用展示。

占位符,顧名思義,就是提前給你占位置,并標好標記。等人來,按照標記好的順序坐下。

int n1 = 1;
int n2 = 2;
int n3 = 3;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2, n3);
// 第2個位置,第1個位置,第3個位置

那么肯定會有這樣的一種情況,來的路上突然有個人要加進來,但是位置提前安排了,結(jié)果不夠坐,會發(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(jié)果,人來少了,位置還多余了,會發(fā)生什么呢?

int n1 = 1;
int n2 = 2;
Console.WriteLine("第{1}個位置,第{0}個位置,第{2}個位置", n1, n2);

在這里插入圖片描述

來的人就發(fā)現(xiàn)還有這么多位置沒有人,看來這主辦方不行啊,這臺戲肯定不好看,散伙散伙!

從上面可以得出,位置可以少,但不能多;值可以多,但一定不能少,否則就會拋出以上這樣的異常。

5、轉(zhuǎn)義字符

轉(zhuǎn)移符號 \

轉(zhuǎn)義字符即轉(zhuǎn)移符號加上特定的字符組成的一個特殊字符,可以在編程表示一些內(nèi)容:

轉(zhuǎn)義字符作用
\'在字符串中顯示單引號
\"在字符串中顯示雙引號
\t制表符,相當于 tab 鍵
\n換行,相當于敲下了回車鍵
\\在字符串中顯示斜杠符號
string s = "小明說:\"我很帥!\"\n小紅說:\"\t\\yue\\\t\"";
Console.WriteLine(s);

在這里插入圖片描述

6、總結(jié)

復盤一下上面提到的一些內(nèi)容:

(1)字符串是引用數(shù)據(jù)類型,聲明字符串變量時,需要使用 string。

(2)拼接字符串的方法有:拼接符號、Concat 方法、占位符使用、$方法使用

(3)比較字符串的方法有:比較運算符 ==、Compare 方法、Equals 方法。

(4)占位符:位置可少不可多,值可多不可少。

(5)常用轉(zhuǎn)義字符的介紹。這里再提一句,轉(zhuǎn)義字符是個字符,雖然它看著是用了兩個字符組成的,但實際上它就只是一個字符。

關(guān)于字符串的學習記錄,到這里就已經(jīng)結(jié)束了。


0 人點贊