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

歡迎訪問 生活随笔!

生活随笔

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

C#

c# string总结

發布時間:2024/9/20 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# string总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.string 是引用類型,其具有不可變性

  我們一般認為的將內存分為五個區域。其中程序員常用的有三個,即棧、堆,靜態存儲區域。

  其中值類型的值存儲在棧中,如int類型,而引用類型的值存儲在堆中。

  string類型具有不可變性,一旦其值發生了改變,就是一個新的對象。即每次對字符串進行操作時就會產生一個新的對象。

  等于null 和 等于""的區別:

?????? string = null; //不分配內存

?????? string = "";???? //分配字節為0的內存

2.與stringbuilder的區別

如果操作少量的數據,我們可以使用string,如果有大量的字符拼接等操作,我們應使用stringbuilder,效率會提高很多。

StringBuilder 對象是動態對象,允許擴充它所封裝的字符串中字符的數量。

如:new StringBuilder("Hello World!", 25);

可以使用讀/寫 Capacity 屬性來設置對象的最大長度。
MyStringBuilder.Capacity = 25;

?

3.常見使用方法

1.?比較字符串

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

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

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

public?boolEquals(string)

public?static?boolEquals(string,string)

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

String支持兩個比較運算符“==”、“!=,分別用于判定兩個字符是否相等和不等,并區分大小寫。相對于上面介紹的方法,這兩個運算符使用起來更加直觀和方便。下例中,使用“==”、“!=”對“Hello”和“World”進行比較。

2.?定位字符串和子串

定位子串是指在一個字符串尋找其中包含的子串或者某個字符,在String類中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny?/LastIndexOf下面進行詳細介紹。

StartWith/EndsWithStartWith方法

可以判定一個字符串對象是否以另一個子字符串開頭,如果是返回True;否則返回False。其定義為:

Public?bool?StartsWith(string?value)?//其中,參數value即待判定的子字符串。

IndexOf/LastIndexOf

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

定位字符:

?

  • intIndexOf(charvalue)
  • intIndexOf(charvalue,intstartIndex)
  • intIndexOf(charvalue,intstartIndex,intcount)
  • ?

    定位子串:

    ?

  • intIndexOf(stringvalue)
  • intIndexOf(stringvalue,intstartIndex)
  • intIndexOf(stringvalue,intstartIndex,intcount)
  • ?

    在上述重載形式中,其參數含義如下:

    Value:待定位的字符或者子串。

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

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

    IndexOfAny/LastIndexOfAnyIndexOfAny方法

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

    ?

  • intIndexOfAny(char[]?anyOf)
  • intIndexOf(char[]?anyOf,intstartIndex)
  • intIndexOf(char[]?anyOf,intstartIndex,intcount)
  • ?

    在上述重載形式中,參數含義如下:

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

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

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

    3.?格式化字符串

    Format方法用于創建格式化的字符串以及連接多個字符串對象。Foramt方法也有多個重載形式,最常用的為:

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

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

    newStr="";

    newStr=String.Format("{0},{1}!",strA,strB);

    Console.WriteLine(newStr);//Hello,World!

    在format參數中包含一些用大括號括起來的數字,如{0}、{1},這些數字分別一一對應于args參數數組中的變量。在生成結果字符串時,將使用這些變量代替{i}。需要說明的是,這些變量并不要求必須為String類型。在特定的應用中,Format方法非常方便。例如,想要輸出一定格式的時間字符串,便可以使用Format方法,如下面代碼所示。

    newStr=String.Format("CurrentTime={0:yyyy-MM-dd}",System.DateTime.Now);

    Console.WriteLine(newStr);//形如:2006-05-19

    其中,格式字符串“yyyy-MM-dd”指定返回時間的格式形如“2006-05-19”,其定義參考System.Globalization.DateTimeFormatInfo類。

    4.?連接字符串

    Concat方法

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

    //ConcatnewStr="";

    newStr=String.Concat(strA,"?",strB);

    Console.WriteLine(newStr);//“Hello?World"

    Join方法

    Join方法利用一個字符數組和一個分隔符串構造新的字符串。常用于把多個字符串連接在一起,并用一個特殊的符號來分隔開。Join方法的常用形式為:public?static?string?Join(stringseparator,string[]?values);其中,參數value為指定的分隔符,而values用于指定所要連接的多個字符串數組,下例用“^^”分隔符把“Hello”和“World”連起來。

    //Join

    newStr="";

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

    newStr=String.Join("^^",strArr);

    Console.WriteLine(newStr);//"Hello^^World"

    連接運算符“+”

    String支持連接運算符“+”,可以方便地連接多個字符串,例如,下例把“Hello”和“World”連接起來。

    newStr="";

    newStr=strA+strB;

    Console.WriteLine(newStr);//"HelloWorld"

    5.?分隔字符串

    使用前面介紹的Join方法,可以利用一個分隔符把多個字符串連接起來。反過來,使用Split方法可以把一個整串,執照某個分隔符,分裂成一系列小的字符串。例如,把整串,按照某個分隔符,分裂成一系列小的字符串。例如,把整串“Hello^^World”按照字符“^”進行分裂,可以得到3個小的字符串,即“Hello”、“”(空串)和“World”。

    Split有多個重載形式,最常用的形式為:

    public?string[]?Split(paramschar[]?separator);

    其中,參數separator數組包含分隔符。下例把“Hello^^World”進行分裂

    //Split

    newStr="Hello^^World";

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

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

    splitStrings=newStr.Split(separator);

    inti=0;

    while(i<splitStrings.Length)

    {

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

    i++;

    }

    輸出結果如下:Item0:Hello?Item1:??Item2:World

    6.?插入和填充字符串

    String類包含了在一個字符串中插入新元素的方法,可以用Insert方法在任意插入任意字符。Insert方法用于在一個字符串的指定位置插入另一個字符串,從而構造一個新的串。Insert方法也有多個重載形式,最常用的為:

    public?string?Insert(intstartIndex,stringvalue);

    其中,參數startIndex用于指定所要插入的位置,從0開始索引;value指定所要插入的字符串。下例中,在“Hello”的字符“H”后面插入“World”,構造一個串“HWorldello”。

    //Insert

    newStr="";

    newStr=strA.Insert(1,strB);

    Console.WriteLine(newStr);//"HWorldello"

    7.?刪除和剪切字符串

    Remove方法

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

    public?string?Remove(intstartIndex,intcount);

    其中,參數startIndex用于指定開始刪除的位置,從0開始索引;count指定刪除的字符數量。下例中,把“Hello”中的“ell”刪掉。

    //RemovenewStr="";newStr=strA.Remove(1,3);

    Console.WriteLine(newStr);//"Ho"

    Trim/TrimStart/TrimEnd

    Trim方法

    若想把一個字符串首尾處的一些特殊字符剪切掉,如去掉一個字符串首尾的空格等,可以使用String的Trim()方法。其形式如下:

    public?string?Trim();

    public?string?Trim(paramschar[]?trimChars);

    其中,參數trimChars數組包含了指定要去掉的字符,如果缺省,則刪除空格符號。下例中,實現了對“@Hello#$”的凈化,去掉首尾的特殊符號。

    //Trim

    newStr="";

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

    String?strC="@Hello#?$";

    newStr=strC.Trim(trimChars);

    Console.WriteLine(newStr);//"Hello"

    另外,同Trim類似,TrimStart和TrimEnd分別剪切掉一個字符串開頭和結尾處的特殊字符。

    8.?復制字符串

    String類包括了復制字符串方法Copy和CopyTo,可以完成對一個字符串及其一部分的復制操作。

    Copy方法

    若想把一個字符串復制到另一個字符數組中,可以使用String的靜態方法Copy來實現,其形式為:public?string?Copy(stringstr);其中,參數str為需要復制的源字符串,方法返回目標字符串。

    CopyTo方法

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

    public?void?CopyTo(intsourceIndex,char[]?destination,intdestinationIndex,intcount);

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

    下例中,把strA字符串“Hello”中的“ell”復制到newCharArr中,并在newCharArr中從第2個元素開始存放。

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

    strA.CopyTo(2,newCharArr,0,3);

    Console.WriteLine(newCharArr);//"Hel"

    9.?替換字符串

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

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

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

    ?其中,參數oldChar和oldValue為待替換的字符和子串,而newChar和newValue為替換后的新字符和新子串。下例把“Hello”通過替換變為“Hero”。

    ?//Replace

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

    ?Console.WriteLine(newStr);

    10.?更改大小寫

    String提供了方便轉換字符串中所有字符大小寫的方法ToUpper和ToLower。這兩個方法沒有輸入參數,使用也非常簡單。下例首先把“Hello”轉換為“HELLO”,然后再變為小寫形式“hello”。

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

    11.?包含轉義字符使用”@”

    如果要使用轉義字符的話,需要在字符前加上”\”,而C#提供了一種新的機制,使用”@”.在”@”后的字符串都看作是原意,不會解釋為轉義字符串.并且以”@”開頭的字符串支持回車換行的顯示方式

    12.刪除某個相同的字符

    string a="a,a,a,";

    刪除所以字符','

    a.Replace(",", "");

    刪除最后一個字符

    方法一(常用):
    ??????????????????? a = a.Substring(0, a.Length - 2);

    方法二(推薦):
    ??????????????????? a = a.TrimEnd(',');

    Trim()、TrimEnd()、TrimStart()的參數

    13.計算某個相同字符的個數

    string?str?=?"1,2,3,4,5,6";
    方法一
    int?count?=?str.Count(ch?=>?ch?==?',');
    方法二
    Regex.Matches(str,@",").Count? 方法三 str.Split(',').Length-1 參考: http://www.cnblogs.com/hunternet/p/4712661.html http://www.cnblogs.com/hackpig/archive/2010/02/15/1668357.html http://blog.csdn.net/angelazy/article/details/8501776

    總結

    以上是生活随笔為你收集整理的c# string总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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