App下載

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

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

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

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

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

例如:

string str = "This is a string!";

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

2、拼接字符串

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

(1)使用拼接符號(hào)

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

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

字符串不僅是字符串之間可以拼接,而且可以和所有的數(shù)據(jù)類(lèi)型進(jìn)行拼接。這是因?yàn)樗袛?shù)據(jù)類(lèi)型都繼承自 Object 這個(gè)基類(lèi),而 Object 中又有 toString 方法。因此,只要子類(lèi)不重寫(xiě)這個(gè)方法,理論上來(lái)說(shuō),所有類(lèi)型都可以轉(zhuǎn)換為字符串類(lèi)型。

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ù)的個(gè)數(shù)至少是兩個(gè)。

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開(kāi)始出現(xiàn)的 $ 方式,也可以用來(lái)拼接字符串。實(shí)際上其實(shí)就是 string.Format 的簡(jiǎn)化版。

string name = "小剛";
int num = 3;
string s = $"{name}蓋了{(lán)num}米高的樓層。";
Console.WriteLine(s);
// 小剛蓋了3米高的樓層。

3、比較字符串

字符串也是可以進(jìn)行比較的,比較方法有如下幾種:

(1)使用比較運(yùn)算符

string s1 = "Woooo";
string s2 = "Wooooa";
bool b = s1 == s2;
// false

(2)string.Compare

string.Compare(s1, s2) 對(duì)傳入的兩個(gè)字符串的各個(gè)字符進(jìn)行比較,如果每個(gè)字符的 Unicode 編碼值一樣,那么將會(huì)返回 0;如果比較到某個(gè)字符的編碼值不一樣,前者大則立刻返回 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

該方法,還可以傳入第三個(gè)參數(shù),布爾值類(lèi)型。當(dāng)布爾參數(shù)為 true 的時(shí)候,將不會(huì)區(qū)分大小寫(xiě)。

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)有占位符的使用展示。

占位符,顧名思義,就是提前給你占位置,并標(biāo)好標(biāo)記。等人來(lái),按照標(biāo)記好的順序坐下。

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

那么肯定會(huì)有這樣的一種情況,來(lái)的路上突然有個(gè)人要加進(jìn)來(lái),但是位置提前安排了,結(jié)果不夠坐,會(huì)發(fā)生什么事情?

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

很顯然想要投機(jī)取巧的人,只配站著。

如果這個(gè)人不道德的話,不僅中途加入,還插在了第三個(gè)人前頭,那么他成功了。

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

被插隊(duì)的人就很遺憾只能站著了!

有時(shí)候主辦方很聰明,料到有些人會(huì)不請(qǐng)自來(lái),這時(shí)候會(huì)多安排一些個(gè)位置??山Y(jié)果,人來(lái)少了,位置還多余了,會(huì)發(fā)生什么呢?

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

在這里插入圖片描述

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

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

5、轉(zhuǎn)義字符

轉(zhuǎn)移符號(hào) \

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

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

在這里插入圖片描述

6、總結(jié)

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

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

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

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

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

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

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


0 人點(diǎn)贊