Char類是C#提供的字符類型,String是C#提供的字符串類型。
字符:
Char類在C#中表示一個Unicode字符。
Char類只定義一個Unicode字符。
Char類常用的方法及說明如下:
方 法 |
說 明 |
IsControl |
指示指定的Unicode字符是否屬於控制字符類別 |
IsDigit |
指示某個Unicode字符是否屬於十進制數字類別 |
IsHighSurrogate |
指示指定的Char對象是否為高代理項 |
IsLetter |
指示某個Unicode字符是否屬於字母類別 |
IsLetterOrDigit |
指示某個Unicode字符是屬於字母類別還是屬於十進制數字類別 |
IsLower |
指示某個Unicode字符是否屬於小寫字母類別 |
IsLowSurrogate |
指示指定的Char對象是否為低代理項 |
IsNumber |
指示某個Unicode字符是否屬於數字類別 |
IsPunctuation |
指示某個Unicode字符是否屬於標點符號類別 |
IsSeparator |
指示某個Unicode字符是否屬於分隔符類別 |
IsSurrogate |
指示某個Unicode字符是否屬於代理項字符類別 |
IsSurrogatePair |
指示兩個指定的Char對象是否形成代理項對 |
IsSymbol |
指示某個Unicode字符是否屬於符號字符類別 |
IsUpper |
指示某個Unicode字符是否屬於大寫字母類別 |
IsWhiteSpace |
指示某個Unicode字符是否屬於空白類別 |
Parse |
將指定字符串的值轉換為它的等效Unicode字符 |
ToLower |
將Unicode字符的值轉換為它的小寫等效項 |
ToLowerInvariant |
使用固定區域性的大小寫規則,將Unicode字符的值轉換為其小寫等效項 |
ToString |
將此實例的值轉換為其等效的字符串表示 |
ToUpper |
將Unicode字符的值轉換為它的大寫等效項 |
ToUpperInvariant |
使用固定區域性的大小寫規則,將Unicode字符的值轉換為其大寫等效項 |
TryParse |
將指定字符串的值轉換為它的等效Unicode字符 |
可以看到Char提供了非常多的實用方法,其中以Is和To開頭的比較重要。以Is開頭的方法大多是判斷Unicode字符是否為某個類別,以To開頭的方法主要是轉換為其他Unicode字符。
轉義字符
C#采用字符“\”作為轉義字符。例如,定義一個字符,而這個字符是單引號,如果不使用轉義字符,則會產生錯誤。
轉義字符就相當於一個電源變換器,電源變換器就是通過一定的手段獲得所需的電源形式,例如交流變成直流、高電壓變為低電壓、低頻變為高頻等。轉義字符也是,它是將字符轉換成另一種操作形式,或是將無法一起使用的字符進行組合。
注意:
轉義符\(單個反斜杠)只針對后面緊跟着的單個字符進行操作。
1 static void Main(string[] args) 2 3 { 4 5 char a = 'a'; //聲明字符a 6 7 char b = '8'; //聲明字符b 8 9 char c = 'L'; //聲明字符c 10 11 char d = '.'; //聲明字符d 12 13 char e = '|'; //聲明字符e 14 15 char f = ' '; //聲明字符f 16 17 //使用IsLetter方法判斷a是否為字母 18 19 Console.WriteLine("IsLetter方法判斷a是否為字母:{0}", Char.IsLetter(a)); 20 21 //使用IsDigit方法判斷b是否為數字 22 23 Console.WriteLine("IsDigit方法判斷b是否為數字:{0}", Char.IsDigit(b)); 24 25 //使用IsLetterOrDigit方法判斷c是否為字母或數字 26 27 Console.WriteLine("IsLetterOrDigit方法判斷c是否為字母或數字:{0}", Char.IsLetterOrDigit(c)); 28 29 //使用IsLower方法判斷a是否為小寫字母 30 31 Console.WriteLine("IsLower方法判斷a是否為小寫字母:{0}", Char.IsLower(a)); 32 33 //使用IsUpper方法判斷c是否為大寫字母 34 35 Console.WriteLine("IsUpper方法判斷c是否為大寫字母:{0}", Char.IsUpper(c)); 36 37 //使用IsPunctuation方法判斷d是否為標點符號 38 39 Console.WriteLine("IsPunctuation方法判斷d是否為標點符號:{0}", Char.IsPunctuation(d)); 40 41 //使用IsSeparator方法判斷e是否為分隔符 42 43 Console.WriteLine("IsSeparator方法判斷e是否為分隔符:{0}", Char.IsSeparator(e)); 44 45 //使用IsWhiteSpace方法判斷f是否為空白 46 47 Console.WriteLine("IsWhiteSpace方法判斷f是否為空白:{0}", Char.IsWhiteSpace(f)); 48 49 Console.ReadLine(); 50 51 }
說明:大多數重要的正則表達式語言運算符都是非轉義的單個字符。轉義符\(單個反斜杠)通知正則表達式分析器反斜杠后面的字符不是運算符。例如,分析器將r視為字符,而將后跟r的反斜杠(\r)視為回車功能。
為了避免轉義序列元素轉義,可以通過以下兩種方式避免。
1、 通過@符實現。
2、 通過逐字指定字符串字面值(兩個反斜杠)實現。
字符串:
首先理解string,String,StringBuilder的概念和區別:
string
string,msdn給出的解釋就是,string 是C#中的關鍵字,並且是引用類型, string 類型表示零或更多 Unicode 字符組成的序列。string 是 .NET Framework 中 String 的別名。但定義相等運算符(== 和 !=)是為了比較 string 對象(而不是引用)的值(后面給出示例解釋這點)。
String:
String是類,表示文本,即一系列 Unicode 字符。String 對象是不可改變的。每次使用 System.String 類中的方法之一時,都要在內存中創建一個新的字符串對象,這就需要為該新對象分配新的空間。如:當我們實例化一個String的對象后,在內存中為此對象分配一個空間。如下:String str = “hello”;當我們修改str的值的時候,如:str = “hello world”;此時,系統會為str重新分配一個空間。這樣原來的內存空間就被浪費掉了,只能等待垃圾回收器回收。在需要對字符串執行重復修改的情況下,與創建新的 String對象相關的系統開銷可能會非常昂貴。
String與string的區別:
string 是 .NET Framework 中 String 的別名,string是C#基元類型(primitive),簡單來說就是編譯器直接支持的數據類型。基元類型要直接映射到Framework類庫(FCL)中的類型,例如,C#中一個基元類型int直接映射到System.Int32類型,這里int是基元類型,System.Int32是FCL類型。而String是FCL類型的,所以在C#的編譯時,會自動的把string轉化為System.String。所以string與String實質上沒什么區別,只是在使用string要做一次轉換,轉換為String。因此,在編碼時我們推薦使用String。
string雖然為引用類型,但是(== 和 !=)是為了比較 string 對象(而不是引用)的值。
概述:
使用string類時,表面來看能夠修改字符串的所有方法實際上並不能修改,實際上它們返回一個根據所調用的方法修改的新的string對象,如果要修改string字符串的實際內容,可以使用StringBuilder類。
各種字符串操作方法:
- 比較:
(1)Compare:
Int Compare(string strA,string sreB)
Int Compare(string strA,string sreB,bool ingorCase)
注:ingorCase若為true那么就忽略大小寫。
返回值:一個32位有符號的整數。
(2)CompareTo:
(以實例對象本身與指定的字符串作比較)
public int CompareTo(string strB)
返回值:一個32位有符號的整數。
(3)Equals
public bool Equals(string value)
public static bool Equals(string a,string b)
2.格式化字符串
public static string Format(string format,object obj)
format:指定的格式
obj:被格式化的對象
格式字符 |
關聯屬性/說明 |
d |
ShortDatePattern |
D |
LongDatePattern |
f |
完整日期和時間(長日期和短時間) |
F |
FullDateTimePattern(長日期和長時間) |
g |
常規(短日期和短時間) |
G |
常規(短日期和長時間) |
m、M |
MonthDayPattern |
r、R |
FC1123Pattern |
s |
使用當地時間的 |
t |
ShortTimePattern |
T |
LongTimePattern |
u |
UniversalSortableDateTimePattern |
U |
使用通用時間的完整日期和時間(長日期和長時間) |
y、Y |
YearMonthPattern |
3.截取字符串
public string Substring(int startIndex,int length)
startIndex:子字符串起始位置的索引
length:子字符串中的字符數
4.分割字符串
public string[] split(params char[] separator);
separator:一個數組包含分隔符
返回值:一個數組,其元素包含此實例中的子字符串,這些字符串由separator中的一個或多個字符分隔。
5.插入和填充字符串
插入字符串:
public string Insert(int startIndex, string value);
填充字符串:
public string PadLeft(int totalWidth,char paddingChar);
totalWidth:結果字符串中的字符數,等於原始字符數加上任何其他填充字符
paddingChar:填充字符
返回值左對齊
public string PadRight(int totalWidth,char paddingChar);
返回值右對齊
復制字符串:
Copy:public static string Copy(string str);
CopyTo:public void CopyTo(int sourceIndex,char[ ]destination,int destinationIndex,int count);
sourceIndex:需要復制字符串的起始位置
destination:目標字符數組
destinationIndex:指定目標數組中的開始存放位置
count:指定要復制的字符個數
替換字符串:
public string Replace(char Ochar,char NChar);
public string Replace(string Ovalue,string NValue);
Ochar:待替換的字符
Nchar替換后的新字符
刪除字符串:
public string Remove(int startIndex);
public string Remove (int startIndex,int count);
可變字符串:
public StringBuilder();
public StringBuilder(int capacity);
public StringBuilder(string value);
public StringBuilder(int capacity,int maxCapacity);
public StringBuilder(string value,int capacity);
public StringBuilder(string value,int startIndex,int length,int capacity);
capacity: StringBuilder對象的建議起止大小
value:字符串,包含用於初始化StringBuilder對象的子字符串
maxCapacity:當前字符串可包含的最大字符數
startIndex:起始位置
length:字符串中的字符數
1、 Append 方法可用來將文本或對象的字符串表示形式添加到由當前 StringBuilder 對象表示的字符串的結尾處。
2、 AppendFormat 方法將文本添加到 StringBuilder 的結尾處,而且實現了 IFormattable 接口,因此可接受格式化部分中描述的標准格式字符串。
3、 Insert 方法將字符串或對象添加到當前 StringBuilder 中的指定位置。
4、 可以使用 Remove 方法從當前 StringBuilder 中移除指定數量的字符,移除過程從指定的從零開始的索引處開始。
5、 使用 Replace 方法,可以用另一個指定的字符來替換 StringBuilder 對象內的字符。