C#數(shù)據(jù)結(jié)構(gòu)之字符串(string)詳解
- 摘要:以具體例子詳解C#字符串的使用。
- 編程語(yǔ)言:C#
- 編程環(huán)境:Visual Studio 2019
字符串代表文字對(duì)象,表示把字符一個(gè)一個(gè)串起來(lái),視為Char對(duì)象的按序只讀集合,使用非常廣泛。
轉(zhuǎn)義字符序列
在講字符串前,先說(shuō)一下字符。不知道大家編程會(huì)不會(huì)注意到,在字符或者字符串里經(jīng)常會(huì)有一些特殊的字符。
比如我們想定義一個(gè)字符,這個(gè)字符就是單引號(hào),但直接把單引號(hào)輸進(jìn)去又會(huì)提示錯(cuò)誤,那是不是這樣的字符串不能被定義呢?那就太小看C#語(yǔ)言了。
對(duì)于一些跟語(yǔ)法沖突的字符或者具有特殊含義的字符,規(guī)定字符“\”為轉(zhuǎn)義字符,緊跟其后的一個(gè)字符要進(jìn)行特殊處理,根據(jù)其后跟的字符來(lái)決定它的意義。常用轉(zhuǎn)義字符序列如下。
| 轉(zhuǎn)義字符序列 | 字符名稱(chēng) | 程序范例 | 運(yùn)行結(jié)果 |
| \' | 單引號(hào) | Write("C\'#"); | C'# |
| \" | 雙引號(hào) | Write("C\"#"); | C"# |
| \n | 換行符 | Write("C\n#"); | C # |
| \t | Tab鍵(空格) | Write("C\t#") | C # |
| \r | 回車(chē)符(回到本行開(kāi)始位置) | Write("C\r#") | #C |
| \\ | 反斜杠 | Write("C\\#") | C\# |
字符串的創(chuàng)建
字符串的聲明
字符串的聲明很簡(jiǎn)單,注意字符串賦值時(shí)要給字符串內(nèi)容前后加上雙引號(hào),聲明語(yǔ)法如下。
string str = "字符串的內(nèi)容";
null字符串與空字符串
這里特別說(shuō)明一下空字符串的創(chuàng)建與判斷,首先是空字符串的創(chuàng)建,方式有以下三種。
三種方式并非完全一樣,其中字符串為null時(shí),若訪問(wèn)其屬性,會(huì)導(dǎo)致異常,string.Empty和“”字符串表示空字符串,即長(zhǎng)度為零的字符串。因此,字符串清空時(shí)常用string.Empty或“”,小編以前沒(méi)明白三者的關(guān)系,用null清空字符串,出了不少異常,吃了不少虧。
string strNull = null;//null字符串,若訪問(wèn)其成員,會(huì)導(dǎo)致異常 string strEmpty = string.Empty;//空字符串,長(zhǎng)度為零 string str = "";//空字符串,長(zhǎng)度為零

了解了空字符串的創(chuàng)建,判斷起來(lái)就容易了,空字符串判斷有以下方式。
其中null只對(duì)應(yīng)null字符串的判斷,空字符串string.Empty和“”可以互相等價(jià),string.IsNullOrEmpty同時(shí)包括null字符串和空字符串的判斷 string.IsNullOrWhiteSpace同時(shí)包括null、空字符串和若干空白字符組成的字符串的判斷。
if (str == null)
{
//僅在str=null時(shí)返回true
}
else if (str == "")
{
//在str為空字符串時(shí)返回true
}
else if (str == string.Empty)
{
//在str為空字符串時(shí)返回true
}
else if (string.IsNullOrEmpty(str))
{
//在str=null或空字符串時(shí)返回true
}
else if (string.IsNullOrWhiteSpace(str))
{
//在str=null、空字符串或若干空白字符組成的字符串時(shí)返回true
}重復(fù)單字符字符串的構(gòu)造
字符串string給出了其構(gòu)造方法,構(gòu)造函數(shù)如下,功能是構(gòu)造由count個(gè)ch字符組成的字符串。
String(char ch, int count);//重復(fù)單字符組成的字符串構(gòu)造
字符串的屬性和常用方法
屬性
Length:獲取(只讀)字符串的長(zhǎng)度。this[index]:獲取(只讀)指定索引位置index的字符。
常用方法
CompareTo(str):判斷當(dāng)前字符串與str是否相等,若相等,返回值0。(注:判斷字符串相等還可以直接將要判斷的兩個(gè)字符串用邏輯等于符號(hào)“==”等起來(lái))ToUpper():將字符串所有字符轉(zhuǎn)換為大寫(xiě)字符。ToLower():將字符串所有字符轉(zhuǎn)換為小寫(xiě)字符。Insert(index,str):返回在索引位置index后插入字符串str后的字符串。Remove(index,count):返回從索引位置index開(kāi)始,刪除count個(gè)字符的字符串。Replace(oldchar,newchar):返回以newchar字符替換字符串中所有oldchar字符的字符串。Replace(oldstr,newstr):返回以newstr字符串替換字符串中所有包含oldstr字符串的字符串。
測(cè)試Replace方法,代碼如下。
string str1 = "She is a girl";
Console.WriteLine(str1.Replace("girl", "boy"));
Console.WriteLine(str1.Replace('i', 'E'));運(yùn)行結(jié)果。

Substring(index,count):返回截取從索引位置index開(kāi)始,count個(gè)字符的字符串。Substring(index):返回截取從索引位置index開(kāi)始到最后的字符串。Split(char):返回以字符char作為分割符分割出來(lái)的字符串組成的數(shù)組。(注:分割出來(lái)的字符串?dāng)?shù)組的元素不包括分割符char自己)
測(cè)試Split方法,代碼如下。
string str2 = "a,b,c,d";
string[] STR = str2.Split(',');
for(int i = 0; i < STR.Length; i++)
{
Console.WriteLine(STR[i]);
}運(yùn)行結(jié)果。

IndexOf(char):返回從小到大匹配到的第一個(gè)字符char的索引號(hào)。LastIndexOf(char):返回從大到小匹配到的第一個(gè)字符char的索引號(hào)。StartsWith(str):匹配字符串開(kāi)頭是否是str,是返回true,否返回false。EndsWith(str):匹配字符串末尾是否是str,是返回true,否返回false。
總結(jié)
本文首先講解了轉(zhuǎn)義字符序列,即如何輸入沖突字符和表示特殊意義的字符;其次是字符串的創(chuàng)建,包括聲明,空字符串與null字符串的創(chuàng)建與判斷的區(qū)別和重復(fù)字符的字符串構(gòu)造;最后從字符串的屬性和方法詳解了字符串的功能。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- C#常用數(shù)據(jù)結(jié)構(gòu)棧的詳細(xì)介紹
- c#解析jobject的數(shù)據(jù)結(jié)構(gòu)
- C#常用數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array
- C#中的數(shù)據(jù)結(jié)構(gòu)介紹
- C#數(shù)據(jù)結(jié)構(gòu)之最小堆的實(shí)現(xiàn)方法
- C#拆分字符串正則表達(dá)式Regex.Split和String.Split方法
- C#去掉字符串中所有匹配的字符String.Replace方法
- C#使用StringBuilder實(shí)現(xiàn)高效處理字符串
- C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問(wèn)題
相關(guān)文章
OpenCvSharp實(shí)現(xiàn)Mat對(duì)象簡(jiǎn)單的像素操作
這篇文章主要介紹了OpenCvSharp實(shí)現(xiàn)Mat對(duì)象簡(jiǎn)單的像素操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
C#導(dǎo)出pdf的實(shí)現(xiàn)方法(瀏覽器不預(yù)覽直接下載)
這篇文章主要給大家介紹了關(guān)于C#導(dǎo)出pdf的實(shí)現(xiàn)方法,實(shí)現(xiàn)后瀏覽器不預(yù)覽就可以直接下載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
C#使用SQLDMO操作數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了C#使用SQLDMO操作數(shù)據(jù)庫(kù)的方法,實(shí)例分析了基于SQLDMO.dll動(dòng)態(tài)鏈接庫(kù)操作數(shù)據(jù)庫(kù)的相關(guān)技巧,需要的朋友可以參考下2015-06-06
使用C#寫(xiě)了一個(gè)可以推算火車(chē)票身份證號(hào)碼的小程序
這篇文章主要介紹了使用C#寫(xiě)了一個(gè)可以推算火車(chē)票身份證號(hào)碼的小程序 的相關(guān)資料,需要的朋友可以參考下2016-02-02
C#調(diào)用Python程序傳參數(shù)獲得返回值
C# 調(diào)用 Python 程序有多種方式,本文主要介紹了4種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
UnityRTS實(shí)現(xiàn)相機(jī)移動(dòng)縮放功能
這篇文章主要為大家詳細(xì)介紹了UnityRTS實(shí)現(xiàn)相機(jī)的移動(dòng)縮放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03

