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