【回顧】C#從入門到精通第五章筆記
C#從入門到精通(第五版)第五章筆記

字符與字符串
1.Char類概述
Char類主要用來存儲(chǔ)單個(gè)字符,占16位(兩個(gè)字節(jié))的內(nèi)存空間。
在定義字符型變量時(shí),要以單引號表示,如‘s’表示一個(gè)字符。而“s”表示一個(gè)字符串。
注意:
Char只定義一個(gè)Unicode字符。
2.Char類的使用
Char類為開發(fā)人員提供了許多的方法。

可以看到Char提供了非常多的實(shí)用方法,其中以Is和To開頭的比較重要。
①.以Is開頭的方法大多是判斷Unicode字符是否為某個(gè)類別,
②.以To開頭的方法主要是轉(zhuǎn)換為其他Unicode字符。
3.轉(zhuǎn)義字符
轉(zhuǎn)義字符是一種特殊的字符變量。其以反斜線“\”開頭,后跟一個(gè)或多個(gè)字符。轉(zhuǎn)義字符具有特定的含義、不同于字符原有的意義,故稱“轉(zhuǎn)義"。
注意:轉(zhuǎn)義符“\”(單個(gè)反斜杠)只針對后面緊跟著的單個(gè)字符進(jìn)行操作。

4.字符串類String類的使用
字符串必須包含在一對雙引號之內(nèi):
例如:“23.23”,“ABCDE”,“你好"
這些都是字符串常量,字符串常量是系統(tǒng)能夠顯示的任何文字信息,甚至單個(gè)字符。
賦值方式:
string str = [ null ];? ? ? ? ??
string:字符串類型
str:字符串名稱
[ null ]:字符串值
5.String類的連接多個(gè)字符串
使用“+”運(yùn)算符可完成對多個(gè)字符串連接的功能。“+”運(yùn)算符可以連接多個(gè)字符串并產(chǎn)生一個(gè)String對象。
6.String類的比較字符串,Compare、CompareTo和Equals方法
在C#中最常見的比較字符串的方法有Compare、CompareTo和Equals等,這些方法都?xì)w屬于String類。下面對這3種方法進(jìn)行詳細(xì)介紹。
(1).Compare方法:
Compare方法用來比較兩個(gè)字符串是否相等,它有很多個(gè)重載方法,其中最常用的兩種方法如下:
Int Compare(string strA,string strB)
Int Compare(string strA,string strB,bool ignorCase)
①.strA和strB:代表要比較的兩個(gè)字符串。
②.ignorCase:是一個(gè)布爾類型的參數(shù),如果這個(gè)參數(shù)的值是true,那么在比較字符串時(shí)就忽略大小寫的差別。Compare方法是一個(gè)靜態(tài)方法,所以在使用時(shí),可以直接引用。
例如:
static void Main(string[] args)
{
string Str1="蕓燁湘楓”;//聲明一個(gè)字符串Str1
string Str2="用一生下載你";//聲明一個(gè)字符串Str2
Console.WriteLine(String.Compare(Str1,Str2));//輸出字符串Str1與Str2比較后的返回值
Console.WriteLine(String.Compare(Str1,Str1);//輸出字符串Str1與Str1比較后的返回值
Console.WriteLine(String.Compare(Str2,Str1);//輸出字符串Str2與Str1比較后的返回值
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為:
1
0
-1
(2).CompareTo 方法:
CompareTo方法與Compare方法相似,都可以比較兩個(gè)字符串是否相等,不同的是CompareTo方法以實(shí)例對象本身與指定的字符串作比較,其語法如下:
public int Compare To(string strB)
例如:
代碼如下:
stra.Compare To(strb)
再例如:
代碼如下:
static void Main(string[] args)
{
string Str1="蕓燁湘楓”;
string Str2="用一生下載你";
Console.WriteLine(Str1.CompareTo(Str2);
Console.ReadLine();
}
輸出1
(3).Equals方法
Equals方法主要用于比較兩個(gè)字符串是否相同,如果相同返回值是true,否則為false。其常用的兩種方式的語法如下:
public bool Equals(string value)
public static bool Equals(string a,string b)
①.value:是與實(shí)例比較的字符串。
②.a和b:是要進(jìn)行比較的兩個(gè)字符串。
例如:
static void Main(string[] args)
{
string Str1="蕓燁湘楓”;
string Str2="用一生下載你";
Console.WriteLine(Str1.Equals(Str2));
Console.WriteLine(String.Equals(Str1,Str2));
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為:
False
False
7.格式化字符串
在C#中,String類提供了一個(gè)靜態(tài)的Format方法,用于將字符串?dāng)?shù)據(jù)格式化成指定的格式。其語法格式如下:
Public static string Format(string format,object obj);
①.format:用來指定字符串所要格式化的形式。
②.obj:要被格式化的對象。
例如:
static void Main(string[] args)
{
string StrA="用一生下載你";
string StrB="永不放棄";
string newstr=String.Format("{0},{1}!",StrA,StrB);
Console.WriteLine(newstr);
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為“用一生下載你,永不放棄?。。 ?。
如果希望日期時(shí)間按照某種格式輸出,那么可以使用Format方法將日期時(shí)間格式化成指定的格式。
在C#中,已經(jīng)提供了一些用于日期時(shí)間的格式規(guī)范,具體描述如表5.3所示。

例如:
static void Main(string[] args)
{
DateTime dt=Date Time.Now;
string strB=String.Format("{0:D}",dt);
Console.WriteLine(strB);
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為“2012年2月22日”。
8.截取字符串,Substring方法
String類提供了一個(gè)Substring方法,該方法可以截取字符串中指定位置和指定長度的字符。其語法格式如下:
public string Substring(int startindex,int length)
①. startlndex:子字符串的起始位置的索引。
②.length:子字符串中的字符數(shù)。
例如:
static void Main(string[] args)
{
string StrA="用一生下載你";
string StrB="";StrB=StrA.Substring(1,4);
Console.WriteLine(StrB);
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為“一生下載”。
注意:
在用Substring方法截取字符串時(shí),如果length參數(shù)的長度大于截取字符串的長度,將從起始位置的索引處截取之后的所有字符。
9.分割字符串,Split方法
String類提供了一個(gè)Split方法,用于分割字符串。該方法的返回值是包含所有分割子字符串的數(shù)組對象,可以通過數(shù)組取得所有分割的子字符串。其語法格式如下:
public string[]Split(params char[]separator);
separator:是一個(gè)數(shù)組,包含分隔符。
例如:
static void Main(string[] args)
{
string StrA="用“一生#下載,你";
char[]separator={'^',"#",','};
String[]splitstrings=new String[100];
splitstrings=StrA.Split(separator);
? ? ? ? ? for(inti=0;i< splitstrings.Length;i++)
? ? ? ? ? {
? ? ? ? ?Console.WriteLine("item{0}:{1}",i,splitstrings[i]);
? ? ? ? ? }
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為:
item0:用
item1:一生
item2:下載
item3:你
10.插入字符串,Insert方法
String類提供了一個(gè)Insert方法,用于向字符串的任意位置插入新元素。其語法格式如下:
public string Insert(int startlndex,string value);
①.startIndex:用于指定所要插入的位置,索引從0開始。
②.value:指定所要插入的字符串。
例如:
static void Main(string[] args)
{
string str1="下載";
string str2;
str2=str1.Insert(0,"用一生");
string str3=str2.Insert(5,"你");
Console.WriteLine(str3);
Console.ReadLine();
}
程序的運(yùn)行結(jié)果為“用一生下載你”。
11.填充字符串,PadLeft(),PadRight方法
String類提供了PadLeft/PadRight方法用于填充字符串,PadLeft方法在字符串的左側(cè)進(jìn)行字符填充,而PadRight方法在字符串的右側(cè)進(jìn)行字符填充。PadLeft方法的語法格式如下:
public string PadLeft(int totalWidth,char paddingChar)
①.totalWidth:指定填充后的字符長度。
②.paddingChar:指定所要填充的字符,如果省略,則填充空格符號。
12.刪除字符串,Remove方法
String類提供了一個(gè)Remove方法,用于從一個(gè)字符串的指定位置開始,刪除指定數(shù)量的字符。其語法格式如下:
Public String Remove(int startlndex);
Public String Remove(int startlndex,int count);
①.startIndex:用于指定開始刪除的位置,索引從0開始。
②.count:指定刪除的字符數(shù)量。
例如:
代碼如下:
static void Main(string[] args)//Main方法
{
string str1="用一生下載你";//聲明一個(gè)字符串變量str1
//聲明一個(gè)字符串變量str2,并使用Remove 方法從字符串str1的索引3處開始刪
string str2=str1.Remove(3);
Console.WriteLine(str2);//輸出字符串str2
Console.ReadLine();程序的運(yùn)行結(jié)果為“用一生”。
}
程序的運(yùn)行結(jié)果為“用一生”。
下面再通過實(shí)例演示如何使用Remove方法的第二種語法格式。
例如:
代碼如下:
static void Main(stringl args)/Main方法
{
string str1=“蕓燁湘楓”;
/聲明一個(gè)字符串變量str1,并初始化
//聲明一個(gè)字符串變量str2,并使用Remove方法從字符串str1的索引1處開始刪除兩個(gè)字
string str2=str1.Remove(1,2);
Console.WriteLine(str2);//輸出字符串str2
Console.ReadLine();程序的運(yùn)行結(jié)果為“蕓楓”。
13.刪除字符串,Copy方法和CopyTo方法
String類提供了Copy和CopyTo方法,用于將字符串或子字符串復(fù)制到另一個(gè)字符串或Char類型的數(shù)組中。
1.Copy方法
該方法用于創(chuàng)建一個(gè)與指定的字符串具有相同值的字符串的新實(shí)例。其語法格式如下:
①.str:是要復(fù)制的字符串。
②.返回值:與str具有相同值的字符串。
例如:
string stra="蕓燁湘楓”;
string strb;
/使用String類的Copy方法,復(fù)制字符串stra 并賦值給strb?
strb=String.Copy(stra);
Console.WriteLine(strb);
Console.ReadLine();
程序的運(yùn)行結(jié)果為“蕓燁湘楓”。
2.CopyTo方法
CopyTo方法的功能與Copy方法基本相同,但是CopyTo方法可以將字符串的某一部分復(fù)制到另個(gè)數(shù)組中。其語法格式如下:
Public void Copy To(int sourcelndex,char[]destination,int destinationlndex,int count);
代碼如下:
static void Main(stringll args)
string str1="用一生下載你";
//聲明一個(gè)字符串變量str1并初始化char]str=new char[100];//聲明一個(gè)字符數(shù)組 str
//將字符串str從索引1開始的4個(gè)字符串復(fù)制到字符數(shù)組str中str1.CopyTo(1,str,0,4);Console.WriteLine(str);//輸出字符數(shù)組中的內(nèi)容Console.ReadLine();
}
14.代替字符串,Replace方法
String類提供了一個(gè)Replace方法,用于將字符串中的某個(gè)字符或字符串替換成其他的字符或字符串。其語法格式如下:
public string Replace(char OChar,char NChar)
public string Replace(string OValue,string NValue)

15.可變字符串類StringBuilder的使用
StringBuilder類有6種不同的構(gòu)造方法,本節(jié)只介紹最常用的一種,其語法格式如下:
public StringBuilder(string value,int cap)
①.value:StringBuilder對象引用的字符串。
②.cap:設(shè)定StringBuilder對象的初始大小。
創(chuàng)建一個(gè)StringBuilder對象,其初始引用的字符串為“Hello World!”。
代碼如下:
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
注意:
StringBuilder類存在于System.Text命名空間中,如果要?jiǎng)?chuàng)建 StringBuilder對象,首先必須引用此命名空間。StringBuilder類中的常用方法及說明如表所示。

16.StringBuilder 類與String類的區(qū)別
它們各自的利弊。
String對象是不可改變的,每次使用String類中的方法時(shí),都要在內(nèi)存中創(chuàng)建一個(gè)新的字符串對象,這就需要為該新對象分配新的空間。
在需要對字符串執(zhí)行重復(fù)修改的情況下,與創(chuàng)建新的String對象相關(guān)的系統(tǒng)開銷可能會(huì)非常昂貴。
如果要修改字符串而不創(chuàng)建新的對象,則可以使用StringBuilder類。
例如,當(dāng)在一個(gè)循環(huán)中將許多字符串連接在一起時(shí),使用StringBuilder類可以提升性能。
第五章完!