C#數(shù)據(jù)結(jié)構(gòu)之字符串(string)詳解
- 摘要:以具體例子詳解C#字符串的使用。
- 編程語言:C#
- 編程環(huán)境:Visual Studio 2019
字符串代表文字對象,表示把字符一個一個串起來,視為Char對象的按序只讀集合,使用非常廣泛。
轉(zhuǎn)義字符序列
在講字符串前,先說一下字符。不知道大家編程會不會注意到,在字符或者字符串里經(jīng)常會有一些特殊的字符。
比如我們想定義一個字符,這個字符就是單引號,但直接把單引號輸進(jìn)去又會提示錯誤,那是不是這樣的字符串不能被定義呢?那就太小看C#語言了。
對于一些跟語法沖突的字符或者具有特殊含義的字符,規(guī)定字符“\”為轉(zhuǎn)義字符,緊跟其后的一個字符要進(jìn)行特殊處理,根據(jù)其后跟的字符來決定它的意義。常用轉(zhuǎn)義字符序列如下。
轉(zhuǎn)義字符序列 | 字符名稱 | 程序范例 | 運行結(jié)果 |
\' | 單引號 | Write("C\'#"); | C'# |
\" | 雙引號 | Write("C\"#"); | C"# |
\n | 換行符 | Write("C\n#"); | C # |
\t | Tab鍵(空格) | Write("C\t#") | C # |
\r | 回車符(回到本行開始位置) | Write("C\r#") | #C |
\\ | 反斜杠 | Write("C\\#") | C\# |
字符串的創(chuàng)建
字符串的聲明
字符串的聲明很簡單,注意字符串賦值時要給字符串內(nèi)容前后加上雙引號,聲明語法如下。
string str = "字符串的內(nèi)容";
null字符串與空字符串
這里特別說明一下空字符串的創(chuàng)建與判斷,首先是空字符串的創(chuàng)建,方式有以下三種。
三種方式并非完全一樣,其中字符串為null時,若訪問其屬性,會導(dǎo)致異常,string.Empty和“”字符串表示空字符串,即長度為零的字符串。因此,字符串清空時常用string.Empty或“”,小編以前沒明白三者的關(guān)系,用null清空字符串,出了不少異常,吃了不少虧。
string strNull = null;//null字符串,若訪問其成員,會導(dǎo)致異常 string strEmpty = string.Empty;//空字符串,長度為零 string str = "";//空字符串,長度為零
了解了空字符串的創(chuàng)建,判斷起來就容易了,空字符串判斷有以下方式。
其中null只對應(yīng)null字符串的判斷,空字符串string.Empty和“”可以互相等價,string.IsNullOrEmpty同時包括null字符串和空字符串的判斷 string.IsNullOrWhiteSpace同時包括null、空字符串和若干空白字符組成的字符串的判斷。
if (str == null) { //僅在str=null時返回true } else if (str == "") { //在str為空字符串時返回true } else if (str == string.Empty) { //在str為空字符串時返回true } else if (string.IsNullOrEmpty(str)) { //在str=null或空字符串時返回true } else if (string.IsNullOrWhiteSpace(str)) { //在str=null、空字符串或若干空白字符組成的字符串時返回true }
重復(fù)單字符字符串的構(gòu)造
字符串string給出了其構(gòu)造方法,構(gòu)造函數(shù)如下,功能是構(gòu)造由count個ch字符組成的字符串。
String(char ch, int count);//重復(fù)單字符組成的字符串構(gòu)造
字符串的屬性和常用方法
屬性
Length
:獲?。ㄖ蛔x)字符串的長度。this[index]
:獲?。ㄖ蛔x)指定索引位置index的字符。
常用方法
CompareTo(str)
:判斷當(dāng)前字符串與str是否相等,若相等,返回值0。(注:判斷字符串相等還可以直接將要判斷的兩個字符串用邏輯等于符號“==”等起來)ToUpper()
:將字符串所有字符轉(zhuǎn)換為大寫字符。ToLower()
:將字符串所有字符轉(zhuǎn)換為小寫字符。Insert(index,str)
:返回在索引位置index后插入字符串str后的字符串。Remove(index,count)
:返回從索引位置index開始,刪除count個字符的字符串。Replace(oldchar,newchar)
:返回以newchar字符替換字符串中所有oldchar字符的字符串。Replace(oldstr,newstr)
:返回以newstr字符串替換字符串中所有包含oldstr字符串的字符串。
測試Replace方法,代碼如下。
string str1 = "She is a girl"; Console.WriteLine(str1.Replace("girl", "boy")); Console.WriteLine(str1.Replace('i', 'E'));
運行結(jié)果。
Substring(index,count)
:返回截取從索引位置index開始,count個字符的字符串。Substring(index)
:返回截取從索引位置index開始到最后的字符串。Split(char)
:返回以字符char作為分割符分割出來的字符串組成的數(shù)組。(注:分割出來的字符串?dāng)?shù)組的元素不包括分割符char自己)
測試Split方法,代碼如下。
string str2 = "a,b,c,d"; string[] STR = str2.Split(','); for(int i = 0; i < STR.Length; i++) { Console.WriteLine(STR[i]); }
運行結(jié)果。
IndexOf(char)
:返回從小到大匹配到的第一個字符char的索引號。LastIndexOf(char)
:返回從大到小匹配到的第一個字符char的索引號。StartsWith(str)
:匹配字符串開頭是否是str,是返回true,否返回false。EndsWith(str)
:匹配字符串末尾是否是str,是返回true,否返回false。
總結(jié)
本文首先講解了轉(zhuǎn)義字符序列,即如何輸入沖突字符和表示特殊意義的字符;其次是字符串的創(chuàng)建,包括聲明,空字符串與null字符串的創(chuàng)建與判斷的區(qū)別和重復(fù)字符的字符串構(gòu)造;最后從字符串的屬性和方法詳解了字符串的功能。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 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)之最小堆的實現(xiàn)方法
- C#拆分字符串正則表達(dá)式Regex.Split和String.Split方法
- C#去掉字符串中所有匹配的字符String.Replace方法
- C#使用StringBuilder實現(xiàn)高效處理字符串
- C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問題
相關(guān)文章
在C#中使用OpenCV(使用OpenCVSharp)的實現(xiàn)
這篇文章主要介紹了在C#中使用OpenCV(使用OpenCVSharp)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11C#使用Jquery zTree實現(xiàn)樹狀結(jié)構(gòu)顯示 異步數(shù)據(jù)加載
這篇文章主要為大家詳細(xì)介紹了C#使用Jquery zTree實現(xiàn)樹狀結(jié)構(gòu)顯示和異步數(shù)據(jù)加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(上)
本篇文章對C#中ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05淺談C#跨線程調(diào)用窗體控件(比如TextBox)引發(fā)的線程安全問題
下面小編就為大家分享一篇淺談C#跨線程調(diào)用窗體控件(比如TextBox)引發(fā)的線程安全問題,具有很好的參考價值,希望對大家有所幫助2017-11-11