《C#程序設(shè)計(jì)》課件第10章字符串_第1頁
《C#程序設(shè)計(jì)》課件第10章字符串_第2頁
《C#程序設(shè)計(jì)》課件第10章字符串_第3頁
《C#程序設(shè)計(jì)》課件第10章字符串_第4頁
《C#程序設(shè)計(jì)》課件第10章字符串_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

字符串思政目標(biāo):

?學(xué)習(xí)字符串,明白編程中重要細(xì)節(jié),引導(dǎo)學(xué)生深入思考

?通過實(shí)例,引導(dǎo)學(xué)生對(duì)知識(shí)融會(huì)貫通,培養(yǎng)學(xué)生創(chuàng)新和實(shí)踐能力技能要求:

?了解字符串概念及其構(gòu)造方式,掌握針對(duì)字符串操作的常用方法

?掌握StringBuilder對(duì)象與String對(duì)象的區(qū)別,掌握其屬性與方法

?了解計(jì)算機(jī)編碼實(shí)踐目標(biāo):

?通過動(dòng)手操作,能夠深入理解字符串與數(shù)組之間的轉(zhuǎn)化

?理解示例,能夠充分理解字符串相關(guān)函數(shù)

?能夠?qū)崿F(xiàn)各種編碼之間的轉(zhuǎn)換第10章字符串的基本特征String類的方法StringBuilder編碼Object類字符串的基本特征01PART字符串及其構(gòu)造字符串是一個(gè)字符數(shù)組,在C#中,默認(rèn)采用Unicode字符編碼方式。C#的字符串可以視為一個(gè)只讀字符數(shù)組,故從字符數(shù)組也可以獲得字符串(1)直接給字符串賦字面值字符串的基本特征應(yīng)注意的是,只修改某個(gè)指定位置的字符,類似“s[1]='x';”是行不通的,因?yàn)樗侵蛔x的。反過來,字符串可以視為只讀字符數(shù)組,故可以像數(shù)組一樣使用字符串的基本特征字符串對(duì)象唯一且重要的屬性是Length,該屬性返回字符串的長度,無論中文還是英文或者數(shù)字字符,都占一個(gè)長度字符串的基本特征字符串具有不可變性,即一旦聲明完畢,字符串就不能再被改變字符串的基本特征由此可以看出,由于字符串是引用類型,上文改變的只是變量s的指向,并非字符串本身。同理,字符串變量的賦值問題,其實(shí)就是更改或者共享指向的問題。在C#中,有個(gè)特殊的字符串:string.Empty,代表"";即一對(duì)空引號(hào),該字符串的長度為零。而null則代表字符串變量沒有任何指向。雖然這兩者意思不一樣,但是在很多場合是不能出現(xiàn)的,于是有了string.IsNullOrEmpty()方法來測試null或空字符串。@注意事項(xiàng)字符轉(zhuǎn)義在字符串的使用過程中,常常會(huì)涉及到@符號(hào)和轉(zhuǎn)義符\的使用。例如,加載圖片前可能需要先定義一個(gè)圖片路徑@不是萬能的,如字符串中包含雙引號(hào)時(shí),還是需要用\進(jìn)行轉(zhuǎn)義,如圖10-10所示。另外,還需要注意\的使用場合。字符串的基本特征String類的方法02PART1.string.Compare()該方法用于比較兩個(gè)字符串值是否相同,其重載形式多達(dá)10種,功能強(qiáng)大,使用靈活,其返回值為-1、0或1,其中,返回0表明兩個(gè)字符串值相等。String類的方法從上例可以看出,該方法比較的是兩個(gè)字符串的值是否相等,另外也可以看到,該方法比較時(shí)默認(rèn)是區(qū)分大小寫的。如果不想?yún)^(qū)分大小寫,應(yīng)該采用合適的重載形式及參數(shù)。2.string.Concat()該方法用于將兩個(gè)或者更多個(gè)字符串或者object對(duì)象連接起來。典型的重載方法如下String類的方法3.string.Copy()該方法從指定字符串復(fù)制得到一個(gè)與其值相等的另一個(gè)字符串實(shí)例,新得到的字符串與源字符串不占用相同內(nèi)存空間String類的方法4.string.Format()String類的方法字母說明示例輸出C貨幣string.Format("{0:C3}",2)$2.000D十進(jìn)制string.Format("{0:D3}",2)002E科學(xué)計(jì)數(shù)法1.20E+0011.20E+001G常規(guī)string.Format("{0:G}",2)2N用逗號(hào)隔開string.Format("{0:N}",250000)250,000.00X十六進(jìn)制string.Format("{0:X000}",12)C該方法可用于數(shù)值、日期等數(shù)據(jù)的格式化輸出,其字母參數(shù)的說明。string.Format()數(shù)值格式化——字母參數(shù)String類的方法string.Format()數(shù)值格式化——其他字符參數(shù)字符說明格式符輸出示例備注00占位{0:00.0000}1500.4200用指定個(gè)數(shù)的0補(bǔ)位#數(shù)字占位{0:(#).##}(1500).42—.小數(shù)點(diǎn){0:0.0}1500.4—,千分割符{0:0,0}1,500必須寫在兩個(gè)0之間%百分比{0:0%}150042%—ee指數(shù){0:00e+0}15e+2—注:該表的輸出都以1500.42為例。String類的方法簡單的日期格式符格式說明示例(傳入當(dāng)前日期DateTime.Now)d短日期10/10/2020D長日期December10,2020t短時(shí)間10:11PMT長時(shí)間10:11:29PMf完整日期短時(shí)間December10,202010:11PMF完整日期長時(shí)間December10,202010:11:29PMg常規(guī)(短日期短時(shí)間)10/12/202010:11PMG常規(guī)(短日期長時(shí)間)10/12/202010:11:29PMM月日December10UGMTDecember11,20203:13:50AMY年月December,2020String類的方法自定義的日期格式符格式符說明格式符示例輸出dd日,兩位,不足補(bǔ)0{0:dd}10ddd簡寫的星期縮寫,3個(gè)字符{0:ddd}Tuedddd完整的星期名字{0:dddd}Tuesdayhh小時(shí)(兩位)12小時(shí)制{0:hh}10HH小時(shí)(兩位)24小時(shí)制{0:HH}22mm分鐘00~59{0:mm}38MM月01~12{0:MM}12MMM月份簡稱{0:MMM}DecMMMM月份全稱{0:MMMM}Decemberss秒數(shù),兩位,00~59{0:ss}46ttAM或PM{0:tt}PMyy年(兩位){0:yy}02yyyy年(四位){0:yyyy}2002:分隔符{0:hh:mm:ss}10:25:20/分隔符{0:dd/MM/yyyy}10/10/2020string.Join()該方法用于將字符串?dāng)?shù)組中的各個(gè)元素以指定的分隔符連接起來。該方法與字符串對(duì)象的Split()方法功能相反,Split()方法使用更為靈活。String類的方法3.Contains()4.CopyTo()1.Clone()該方法完成字符串的復(fù)制,不過其返回值是Object類型的。2.CompareTo()該方法具有兩種重載形式,它不具有string.Compare()方法的靈活性,只能采取大小寫敏感的方式將調(diào)用方字符串與另外一個(gè)字符串或者Object類型實(shí)例進(jìn)行比較。該方法判斷調(diào)用方字符串中指定字符串的存在性。其返回值為:如果字符串中出現(xiàn)text,則返回true,否則返回false,如果text為空字符串("")也返回true。String類的方法字符串對(duì)象的方法該方法用于實(shí)現(xiàn)從調(diào)用方字符串到字符數(shù)組的復(fù)制04030201從源字符串sSrc的索引位置(srcIndex)處開始復(fù)制srcIndexdesChar字符數(shù)組中開始接受復(fù)制結(jié)果的起始位置,即復(fù)制過來的結(jié)果從desIndex指定的位置開始存儲(chǔ),該位置前的元素維持不變desIndex復(fù)制的字符存入此字符數(shù)組desChar從源字符串復(fù)制count個(gè)字符countString類的方法參數(shù)意義分別如下(1)EndsWith()方法用于判斷調(diào)用方字符串是否以指定字符串結(jié)束,其常用重載形式如圖10-21所示。該重載形式判斷調(diào)用方字符串對(duì)象是否以value指定的字符串結(jié)束,是則為true,否則為false。該形式中的第二個(gè)參數(shù)設(shè)置比較時(shí)的區(qū)域和大小寫等。String類的方法5.EndsWith()(2)StartsWith()方法用于判斷調(diào)用方字符串是否以指定字符串開始該形式判斷調(diào)用方字符串對(duì)象是否以value指定的字符串開始,是則為true,否則為false。若比較時(shí)有額外條件,可通過StringComparison枚舉型參數(shù)指定。String類的方法StartsWith()方法用于比較兩個(gè)字符串是否相等,其常用重載形式如圖所示。該重載形式表示比較調(diào)用方字符串與value參數(shù)給出的字符串值是否相同,若相同返回true,否則返回false。該形式表示比較調(diào)用方的字符串對(duì)象與參數(shù)給出的對(duì)象在不區(qū)分大小寫的情況下是否相同,如相同,就返回true;反之,返回false。第二個(gè)參數(shù)指定區(qū)域性、大小寫等。String類的方法6.Equals()在C#中,也可以使用==或者!=來判斷兩個(gè)字符串是否相等,結(jié)果與Equals()方法相同。該方法用于獲取指定的字符串在調(diào)用方字符串的開始位置索引該形式表示在調(diào)用方字符串對(duì)象中尋找field,如果找到,返回開始索引,反之,返回-1。String類的方法7.IndexOf()該方法用于獲取指定字符數(shù)組中所有字符在調(diào)用方字符串中的最早位置該形式表示在調(diào)用方字符串對(duì)象中查找字符數(shù)組anyOf中的字符,查找位置從startIndex指示的位置開始,返回的值是找到字符的最小位置值,即若在字符數(shù)組anyOf中有多個(gè)字符都存在于字符串對(duì)象中,則其返回值是多個(gè)字符位置中最靠前的那一個(gè)索引位置。String類的方法8.IndexOfAny()統(tǒng)計(jì)字符或者單詞個(gè)數(shù)是常用功能,例如MicrosoftWord即具備此項(xiàng)功能。下面以統(tǒng)計(jì)單詞個(gè)數(shù)的功能來演示IndexOfAny()方法的使用。由于需要統(tǒng)計(jì)單詞,而對(duì)英文字符串而言,各個(gè)單詞之間的間隔可能的情況有:空格、逗號(hào)、句號(hào)、問號(hào)、感嘆號(hào)等,所以只需要將這些標(biāo)點(diǎn)符號(hào)存入字符數(shù)組anyOf中即可。代碼如圖所示。該程序僅適用于英文字母,對(duì)中文并不適用,若希望對(duì)中文適用,要考慮更多的標(biāo)點(diǎn)。String類的方法該方法用于向調(diào)用方字符串中插入特定字符串該形式表示在startIndex指示的索引位置插入字符串value,原來startIndex及后續(xù)的內(nèi)容后移,返回插入后的值。String類的方法9.Insert()(1)PadLeft()方法在調(diào)用方字符串的開頭,通過添加指定的重復(fù)字符填充字符串。(2)PadRight()方法在調(diào)用方字符串的結(jié)尾,通過添加指定的重復(fù)字符填充字符串。String類的方法10.PadLeft()和PadRight()該方法用于刪除調(diào)用方字符串中指定內(nèi)容第一種重載形式該形式表示從startIndex位置開始,刪除此位置后所有的字符(包括當(dāng)前位置所指定的字符)String類的方法11.Remove()第二種重載形式該形式表示從startIndex位置開始,刪除count個(gè)字符。String類的方法11.Remove()該方法用于替換調(diào)用方字符串中的特定內(nèi)容,有兩種聲明形式該形式表示在調(diào)用方字符串對(duì)象中尋找oldChar,如果找到,就用newChar將oldChar替換掉。String類的方法12.Replace()該方式表示在對(duì)象中尋找oldString,若找到,則用newString將oldString替換掉。String類的方法12.Replace()該方法用于切割字符串該方式表示根據(jù)separator指定的字符切分調(diào)用方字符串,返回切分后的字符串?dāng)?shù)組,separator可以是不包含分隔符的空數(shù)組或空引用。String類的方法13.Split()參數(shù)count指定要返回的子字符串的最大數(shù)量,若count不填則全部拆分。String類的方法13.Split()StringSplitOptions為枚舉,其值如下:None,返回值包括含有空字符串的數(shù)組元素;RemoveEmptyEntries,返回值不包括僅為空字符串的數(shù)組元素。String類的方法13.Split()如果想從字符串s="a,b.c,6,,3,9_8-e,f."中取得各個(gè)字母和數(shù)字,方法如下String類的方法13.Split()該方法存在一些問題,即6后面有兩個(gè)連續(xù)的逗號(hào),正是此處會(huì)導(dǎo)致最終結(jié)果中有一個(gè)為空串的元素。這是一個(gè)比較長的字符串,修正的方法就是給Split()方法補(bǔ)充第二個(gè)參數(shù),StringSplitOptions.RemoveEmptyEntries。設(shè)定字符串如圖所示,從該字串中提取出名詞,仍然使用Split()方法,只是第一個(gè)參數(shù)不再使用char類型數(shù)組,使用字符串形式的重載即可,其他類同。該方法經(jīng)常用于導(dǎo)入格式化的數(shù)據(jù)并做相關(guān)處理。String類的方法13.Split()該方法用于從調(diào)用方字符串中提取子字符串String類的方法14.Substring()該形式表示從startIndex位置開始,提取此位置后所有的字符(包括當(dāng)前位置所指定的字符)String類的方法14.Substring()該形式表示從startIndex位置開始,提取count個(gè)字符該方法用于將調(diào)用方字符串轉(zhuǎn)換為字符數(shù)組。String類的方法15.ToCharArray()通過字符數(shù)組的方式來修改一個(gè)字符串的思路是:先把字符串通過ToCharArray()轉(zhuǎn)換為字符數(shù)組,然后修改此數(shù)組的元素,最后通過newstring(char[])來達(dá)到生成一個(gè)滿足條件的新字符串的要求ToLower()方法表示將調(diào)用方字符串中的大寫全部轉(zhuǎn)為小寫,ToUpper()方法表示將指定字符串中的小寫轉(zhuǎn)換為大寫String類的方法16.ToLower()和ToUpper()通過字符數(shù)組的方式來修改一個(gè)字符串的思路是:先把字符串通過ToCharArray()轉(zhuǎn)換為字符數(shù)組,然后修改此數(shù)組的元素,最后通過newstring(char[])來達(dá)到生成一個(gè)滿足條件的新字符串的要求該方法表示清空調(diào)用方字符串前后的空格String類的方法17.Trim()該形式表示將字符串對(duì)象包含的字符串兩邊的空格去掉后返回。String類的方法17.Trim()該形式表示從調(diào)用方字符串對(duì)象的開始和末尾移除指定字符數(shù)組中的所有匹配項(xiàng),遇到第一個(gè)不匹配的項(xiàng)則停止刪除操作。String類的方法17.Trim()與該方法功能類似的還有TrimEnd()和TrimStart()TrimEnd()表示對(duì)調(diào)用方字符串末尾與指定字符數(shù)組中的所有項(xiàng)進(jìn)行匹配,匹配到則移除,遇到第一個(gè)不匹配的則停止。TrimStart()表示對(duì)調(diào)用方字符串開始部分與指定字符數(shù)組中的所有項(xiàng)進(jìn)行匹配,匹配到則移除,遇到第一個(gè)不匹配的則停止。String類的方法綜合案例String類的方法運(yùn)行結(jié)果StringBuilder03PART04030201StringBuilder與string對(duì)象相比的最大好處在于,對(duì)StringBuilder對(duì)象進(jìn)行追加、插入、替換、移除操作時(shí),不會(huì)產(chǎn)生新對(duì)象,因此它適用于對(duì)字符串進(jìn)行頻繁操作的場合。StringBuilder優(yōu)勢StringBuilder對(duì)象所占用的內(nèi)存是動(dòng)態(tài)變化的,當(dāng)然也可以在實(shí)例化時(shí)顯式指定其容量。StringBuilder默認(rèn)大小是16,最大容量是Int32.MaxValue,當(dāng)往其中存入的數(shù)據(jù)長度大于最大容量時(shí),會(huì)引發(fā)ArgumentOutOfRangeException異常。StringBuilder對(duì)象StringBuilderStringBuilder屬性StringBuilder屬性作用MaxCapacity對(duì)象的最大容量Length對(duì)象中所存儲(chǔ)字符串的實(shí)際長度Capacity設(shè)置或獲取對(duì)象的容量,當(dāng)設(shè)置的初始對(duì)象容量小于Length時(shí),Capacity會(huì)自動(dòng)擴(kuò)大到Length所指定的大小示例StringBuilder對(duì)象的屬性從執(zhí)行結(jié)果仔細(xì)體會(huì)三個(gè)屬性的含義。最大容量MaxCapacity維持不變,Length屬性是StringBuilder屬性中字符串的長度,而容量Capacity則默認(rèn)為16,當(dāng)Length小于或等于指定的Capacity時(shí),Capacity維持初始指定大小,否則Capacity會(huì)自動(dòng)擴(kuò)展以便能容納所有字符。StringBuilder示例另外,也可以在實(shí)例化StringBuilder對(duì)象時(shí),同時(shí)指定其字符串內(nèi)容和容量大小StringBuilder這并不意味著sb對(duì)象只能容納200個(gè)字符,當(dāng)往其中存放的字符超過200時(shí),會(huì)自動(dòng)擴(kuò)充。StringBuilder常用方法StringBuilder方法作用Append用于將文本或者對(duì)象的字符串表示形式添加到當(dāng)前對(duì)象的結(jié)尾處AppendFormat用于對(duì)追加部分字符串進(jìn)行格式化EnsureCapacity動(dòng)態(tài)調(diào)整StringBuilder對(duì)象的容量大小,但不得小于LengthInsert將指定的內(nèi)容(字符、字符串)等插入到當(dāng)前實(shí)例中的指定位置Replace將當(dāng)前實(shí)例中指定的內(nèi)容(字符、字符串)等替換為另外指定內(nèi)容示例Append()。該方法用于往現(xiàn)有字符串實(shí)例追加字符串StringBuilder從上述示例可以看到:StringBuilder實(shí)例的容量增加遵從2的冪次增長規(guī)律,最小為16。Append()方法可以起到類似“+”的字符串接的作用,但與string類型不同的是,使用Append()方法不會(huì)在內(nèi)存中創(chuàng)建新的字符串實(shí)例。ToString()方法用于字符串的原樣顯示。示例AppendFormat()。該方法可以用于將字符串按照指定的格式進(jìn)行格式化后再追加到StringBuilder實(shí)例后面StringBuilder其中,format參數(shù)指定追加時(shí)所使用的格式符,而args參數(shù)則指定需要追加的內(nèi)容。示例EnsureCapacity()。若當(dāng)前容量小于指定容量,內(nèi)存分配會(huì)增加內(nèi)存空間以達(dá)到指定容量,則可以通過該方法增加StringBuilder實(shí)例所占的空間,但無法縮減其空間StringBuilder通過上面的程序,也可以看到EnsureCapacity()方法可以增加StringBuilder實(shí)例所占空間的大小,但是卻無法縮減其所占用空間。示例Insert()。該方法在當(dāng)前字符串中插入指定的內(nèi)容,其重載形式非常多StringBuilder在index位置開始插入count個(gè)value,得到一個(gè)新的字符串實(shí)例示例Replace()。用于將當(dāng)前實(shí)例中指定的內(nèi)容(字符、字符串)等替換為另外指定內(nèi)容。該方法有如下幾種常用重載形式StringBuilder編碼04PART04030201計(jì)算機(jī)中所有數(shù)據(jù)的存儲(chǔ)和運(yùn)算都使用二進(jìn)制數(shù)進(jìn)行表示,一個(gè)英文字符和二進(jìn)制位之間有對(duì)應(yīng)關(guān)系。數(shù)據(jù)在進(jìn)行使用時(shí),為避免混亂,都需要遵循相同的編碼規(guī)則。最廣泛使用的一種字符編碼是ASCII碼。編碼的背景世界有多種語言,不同語言之間的編碼,有時(shí)并不遵循ASCII碼的規(guī)范,因而造成亂碼問題。為解決亂碼問題,出現(xiàn)一種新的編碼方案,稱之為Unicode編碼Unico

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論