日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#编程(四十四)----------string和stringbuilder

發布時間:2025/5/22 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#编程(四十四)----------string和stringbuilder 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

System.String

首先string類是靜態的,System.String是最常用的字符串操作類,可以幫助開發者完成絕大部分的字符串操作功能,使用方便.

1.比較字符串

比較字符串是指按照字典排序規則,判定兩個字符的相對大小.按照點點規則,在一本英文字典中,出現在前面的單詞小于出現在后面的單詞.string類中,常用的比較字符串的方法包括Compare,CompareTo,CompareOrdinal以及Equals,下面進行詳細的介紹.

Compare()方法是string類的靜態方法,用于全面比較兩個兩個字符串對象,包括6種重載方法.CompareTo()方法將當前字符串對象與另一個?對象做比較,其作用與Compare類似,返回值也相同.CompareToCompare相比,區別在于:CompareTO不是靜態方法,可以通過一個string對象調用;CompareTo沒有重載形式,只能按照大小寫敏感方法比較兩個整串.

Equals()方法用于方便的判斷兩個字符串是否相同,有兩種重載形式:

public?bool?Equals(string?str)

public?static?bool?Equals(string?str1,string?str2);

如果兩個字符串相等,Equals()返回值為true;否則,返回False.

string支持兩個比較運算符”==”和”!=”,分別用于判定兩個字符串是否相等和不等,并區分大小寫.相對于上面介紹的方法,這兩個運算符使用起來更加直觀和方便.

?

2.定位字符串和子串

定位子串是指在一個字符串尋找其中包含的子串或者某個字符,string類中,常用的定位子串和字符的方法包括:StartsWith(),EndsWith(),IndexOf(),LastIndxOf(),IndexOfAny()以及LastIndexOf(),下面進行詳細介紹:

StartsWith()/EndsWith()方法

可以判定一個字符串對象是否以另一個子做富川開頭,如果是返回True;否則返回false,其定義為:public?bool?StartsWith(string?value)?//參數value即待判定的子字符串.

?

IndexOf()/LastIndexOf()

IndexOf()方法用于搜索一個字符串,某個特定的字符串或子串第一次出現的位置,該方法區分大小寫,并從字符串的首字符以0技術.如果字符串中不包含這個字符或子字符串,則返回-1.共有如下6中重載形式:

定位子串:

int?IndexOf(char?value)

int?IndexOf(char?value?,?int?StartIndex)

int?IndexOf(char?value,int?startIndex?int?count)

定位子串:

int?IndexOf(stringvalue)

int?IndexOf(string?value?,?int?StartIndex)

int?IndexOf(stringvalue,int?startIndex?int?count)

在上述的重載行駛中,其參數含義如下

value:待定位的字符或者子串

startIndex:在總串中開始搜索的起始位置

Count:在總串中從起始位置?開始搜索的字符數.

?

IndexOfAny()/LastIndexOfAny()

其功能同IndexOf類似,其區別在于,可以搜索在一個字符串中,出現在一個字符串數組中的任意字符第一次出現的位置.同樣,該方法區分大小寫,并從字符串的首字符開始以0技術.如果字符串中不包括這個字符或子串,則返回-1.

IndexOfAny類似,LastIndexOfAny用于搜索在一個字符串中,出現在一個字符數組中任意字符最后一次出現的位置。

?

案例:

????????????string?s?=?"hello";

????????????char[]?arr?=?{?'H','e','l'};

????????????int?i1?=?s.IndexOfAny(arr);

????????????int?i2?=?s.LastIndexOfAny(arr);

????????????Console.WriteLine("IndexOfAny的結果是?:{0}??\nLastIndexOfAny的結果是?:{1}",i1,i2);

????????????Console.ReadKey();

?

.IndexOfAny有三種重載形式:

int?IndexOfAny(char?[]?anyOf)

int?IndexOfAny(char?[]?anyOf,int?startIndex)

int?IndexOfAny(char?[]?anyOf,int?startIndex,int?count)

在上述重載行駛中,其參數含義如下:

anyOf:待定位的字符或者子串,方法將返回這個數組中任意一個字符第一次出現的位置

startIndex:在總串中開始搜索得起始位置

Count:在總串中從起始位置開始搜索的字符串

?

3.格式化字符串

Format()方法用于創建格式化的字符串以及連接多個字符串對象.FOrmat()方也有多個重載形式,最常用的是:

public?static?string?Format(string?format,params?object?[]?args);

其中,參數format用于指定返回字符串的格式,args為一系列變量參數.可以通過下面的實例來掌握其用法.

????????????string?strA?=?"hello",?strB?=?"world",newStr="";

????????????newStr?=?string.Format("{0},{1}",strA,strB);

????????????Console.WriteLine(newStr);

format參數中包含一些用大括號括起來的數字,{0},{1},這些數字分別一一對應于args參數數組中的變量.在生成結構字符串時,將使用這些變量代替{i}.需要說明的是,這些變量并不是非得為string類型.在特定的應用中,format方法非常方便.例如,要輸出一定個事的瞬間字符串,便可以使用format()方法,代碼如下:

????????????newStr?=?string.Format("CurrentTIme={0:yyyy:MM:dd}",System.DateTime.Now);

????????????Console.WriteLine(newStr);

?

其中,格式字符串”yyyy:MM:dd”指定返回時間的格式形如”2015:7:21”.

?

4.連接字符串

Concat()方法用戶諒解兩個或多個字符串,Concat()方法也有多個重載形式,最常用的為:public?static?Concat(params?string?[]?values);//其中values用于指定索要連接的多個字符串,可以死通過下面的實例來掌握其使用方法.

????????????string?newStr?=?string.Concat("hello","?","world");

????????????Console.WriteLine(newStr);

?

Join()方法利用一個字符數組和一個分割字符串構造新的字符串.常用于把多個字符串連接在一起,并用一個特殊的符號來分隔開.Join()方法的常用形式:public?static?string?Join(string?separator?,string?[]?values);//其中,參數separator?為指定的分隔符,values用于指定所要連接的多個字符串數組,案例:

????????????string?strA?=?"hello",?strB?=?"world",newStr="";

????????????//newStr?=?string.Format("CurrentTIme={0:yyyy:MM:dd}",System.DateTime.Now);

????????????//string?newStr?=?string.Concat("hello","?","world");

????????????string?[]strArr={strA,strB};

//使用^^分隔字符串數組

????????????newStr?=?string.Join("^^",strArr);

????????????Console.WriteLine(newStr);

????????????Console.ReadKey();

?

?

連接運算符”+”

string支持連接運算符”+”,可以方便的連接多個字符串,例如,下面把”hello”和”world”連接起來;

????????????string?newStr?=?"hello"?+?",world";

????????????Console.WriteLine(newStr);

5.分割字符串

使用前面介紹的Join方法,可以利用一個分隔符把多個字符串連接起來.反過來,使用Split方法可以把一個整串,按照某個分隔符,分裂成一系列小的字符串.例如,把整串”hello^^world”按照字符”^”進行分割,可以得到三個小的字符串,即”hello”,””(空串),”world”.

Split()方法有多個重載形式,最常用的形式為:

public?string?[]?Split(params?char?[]?separator)

其中參數separator數組包含分隔符.下例把”hello^^world”進行分割:

????????????string?newStr?=?"hello^^world";

????????????char[]?separator?=?{?'^'};

????????????string[]?splitStrings?=?new?string[100];

????????????splitStrings?=?newStr.Split(separator);

????????????int?i?=?0;

????????????while?(i<splitStrings.Length)

????????????{

????????????????Console.WriteLine("item:{0}??{1}",i,splitStrings[i]);

????????????????i++;

????????????}

?

?

?

6.插入和填充字符串

string類包含了在一個字符串中插入新元素的方法,可以用insert()方法在任意位置插入任意字符.Insert()方法用于在一個字符串的指定位置插入另一個字符串,從而構造一個新的串,Insert()方法也有多個蟲子形式,最常用的是:

public?string?Insert(int?startIndex,?string?value);

其中,參數startIndex用于指定所要插入的位置,0開始索引;value指定所要插入的字符串.

下例在”hello”的字符”h”后面插入”world”,最后的結果為”hworldello”:

????????????string?newStr?=?"";

????????????newStr?=?"hello".Insert(1,?"world");

????????????Console.WriteLine(newStr);

?

?

7.刪除和剪切字符串

Remove()方法從一個字符串的指定位置開始,刪除指定數量的字符.最常用的形式為:

public?string?Remove(int?startIndex,int?count);

其中,參數startIndex用于指定開始刪除的位置,0開始索引;count指定刪除的字符數量.下例中,將”hello”中的”ell”刪除:

????????????string?newStr?=?"hello";

????????????newStr?=?newStr.Remove(1,?3);

????????????Console.WriteLine(newStr);

?

Trim()方法

若想把一個字符串首尾處的一些特殊字符刪除,如去掉一個字符串首尾的空格等,可以使用stringTrim()方法.形式:

public?string?Trim();

public?string?Trim(params?char?[]?trimChars);

其中,參數trimChars數組包含了指定要去除的字符,如果缺省,則刪除空格符號.下例中,實現了對”@hello#$”的凈化.

????????????char[]?trimChars?=?{?'@','#','$'};

????????????string?str?=?"@hello#$";

????????????string?newStr?=?str.Trim(trimChars);

????????????Console.WriteLine(newStr);

8.復制字符串

string類包含了復制字符串方法CopyCopyTo,可以完成對一個字符串及其一部分的復制操作.

Copy()方法可以把一個字符串復制到另一個字符數組中,形式為:public?string?Copy(string?str);其中,參數str為需要復制的源字符串,方法返回目標字符串.

CopyTo()方法可以實現Copy同樣的功能,但功能更為豐富,可以賦值字符串的一部分到一個字符數組中.另外CopyTo不是靜態方法,其形式為:

public?void?CopyTo(int?sourceIndex,char?[]?destination,int?destinationIndex,int?count);

其中,參數sourceIndex為需要復制的字符起始位置,destination為目標字符數組,destinationIndex指定目標數組中的開始存放位置,count指定要復制的字符個數.

案例:

????????????char[]?newCharArr?=?new?char[100];

????????????"hello".CopyTo(2,?newCharArr,?0,?3);

????????????Console.WriteLine(newCharArr);

?

分析:把”hello”中的llo復制到newCharArr.

?

?

9.替換字符串

要替換一個字符串中的某些特定字符或者某個子串,可以使用Replcace()方法來實現,其形式為:

public?string?Replace(char?oldChar,char?newStr);

public?string?Replac(string?oldValue,string?newValue);

其中,參數oldCharoldValue為待替換的字符和子串,newCharnewValue為替換后的新字符和新子串:

????????????string?newStr?=?"hello".Replace("ll",?"r");

????????????Console.WriteLine(newStr);

?

?

10.更改大小寫:

string提供了方便轉換字符串中所有字符大小寫的方法ToUpperTOLower.這兩個方法沒有輸入參數,使用也非常方便.案例:

????????????Console.WriteLine("hello".ToUpper());

????????????Console.WriteLine("HELLO".ToLower());

?

?

?

總結:本節介紹了最常用的String類,并從比較、定位子串、格式化、連接、分裂、插入、刪除、復制、大小寫轉換10個方面介紹了其方法。之所以稱String對象為靜態串,是因為一旦定義一個String對象,就是不可改變的。在使用其方法(如插入、刪除操作)時,都要在內在中創建一個新的String對象,而不是在原對象的基礎上進行修改,這就需要開辟新的內存空間。如果需要經常進行串修改操作,使用String類無疑是非常耗費資源的,這時需要使用StringBuilder類。

創建新的string對象相關的系統開銷可能會非常昂貴.如果要修改字符串而不創建新的對象,則可以使用System.StringBuikder.例如,當在一個循環中將許多字符串連接在一起時,使用StringBuilder類可以提升性能.

通過用一個重載的構造函數方法初始化變量,可以創建StringBuilder類的新實例,示例如下:

StringBuilder?sb=new?StringBuilder(“hello,world”);?

?

設置容量和長度

雖然StringBuilder?對象是動態對象,允許擴充它所封裝的字符串中字符的數量,但是你可以為它容納的最大字符數指定一個值,此值稱為該對象的容量,不應將它與當前StringBuilder?對象容納的字符串長度混淆在一起.例如,可以創建StringBuilder類的帶字符串”hello”(長度為5)的一個新實例,同時可以指定該對象的最大容量為25.當修改StringBuilder,在達到容量之前,他不會為其自己重新分配空間.當達到容量時,將自動分配新的空間且容量翻倍.可以使用重載的構造函數之一來指定StringBuilder類的容量,下例指定可以將StringBuilder對象擴充到最大25個空白.

StringBuilder?sb=new?StringBuilder(“hello,world”,25);?

?

另外,可以使用讀/Capacity屬性來設置對象的最大長度.下例代碼使用Capacity屬性來定義對象的最大長度.

sb.Capacity=25;

?

EnsureCapacity方法可用來檢查當前StringBuilder的容量

也可以查看或設置Length屬性.如果將Length屬性設置為大于Capacity屬性的值,則自動將Capacity屬性更改為與Length屬性相同的值.如果將Length屬性設置為小于當前StringBuilder?對象內的字符串長度的值,則會縮短該字符串.

?

修改?StringBuilder?字符串

方法名?使用

StringBuilder.Append?將信息追加到當前?StringBuilder?的結尾。

StringBuilder.AppendFormat?用帶格式文本替換字符串中傳遞的格式說明符。

StringBuilder.Insert?將字符串或對象插入到當前?StringBuilder?對象的指定索引處。

StringBuilder.Remove?從當前?StringBuilder?對象中移除指定數量的字符。

StringBuilder.Replace?替換指定索引處的指定字符。

?

?

Append?方法可用來將文本或對象的字符串表示形式添加到由當前?StringBuilder?對象表示的字符串的結尾處。以下示例將一個?StringBuilder?對象初始化為“Hello?World”,然后將一些文本追加到該對象的結尾處。將根據需要自動分配空間。

StringBuilder?MyStringBuilder?=?new?StringBuilder("Hello?World!");?MyStringBuilder.Append("?What?a?beautiful?day.");?Console.WriteLine(MyStringBuilder);

  此示例將?Hello?World!?What?a?beautiful?day.?顯示到控制臺。

AppendFormat

  AppendFormat?方法將文本添加到?StringBuilder?的結尾處,而且實現了?IFormattable?接口,因此可接受格式化部分中描述的標準格式字符串。可以使用此方法來自定義變量的格式并將這些值追加到?StringBuilder?的后面。以下示例使用?AppendFormat?方法將一個設置為貨幣值格式的整數值放置到?StringBuilder?的結尾。

int?MyInt?=?25;?StringBuilder?MyStringBuilder?=?new?StringBuilder("Your?total?is?");?MyStringBuilder.AppendFormat("{0:C}?",?MyInt);?Console.WriteLine(MyStringBuilder);

  此示例將?Your?total?is?$25.00?顯示到控制臺。

Insert

  Insert?方法將字符串或對象添加到當前?StringBuilder?中的指定位置。以下示例使用此方法將一個單詞插入到?StringBuilder?的第六個位置。

StringBuilder?MyStringBuilder?=?new?StringBuilder("Hello?World!");?MyStringBuilder.Insert(6,"Beautiful?");?Console.WriteLine(MyStringBuilder);

  此示例將?Hello?Beautiful?World!?顯示到控制臺。

Remove

  可以使用?Remove?方法從當前?StringBuilder?中移除指定數量的字符,移除過程從指定的從零開始的索引處開始。以下示例使用?Remove?方法縮短?StringBuilder

StringBuilder?MyStringBuilder?=?new?StringBuilder("Hello?World!");?MyStringBuilder.Remove(5,7);?Console.WriteLine(MyStringBuilder);

  此示例將?Hello?顯示到控制臺。

Replace

  使用?Replace?方法,可以用另一個指定的字符來替換?StringBuilder?對象內的字符。以下示例使用?Replace?方法來搜索?StringBuilder?對象,查找所有的感嘆號字符?(!),并用問號字符?(?)?來替換它們。

StringBuilder?MyStringBuilder?=?new?StringBuilder("Hello?World!");?MyStringBuilder.Replace(!,??);?Console.WriteLine(MyStringBuilder);

轉載于:https://www.cnblogs.com/android-blogs/p/6603633.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C#编程(四十四)----------string和stringbuilder的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。