C#中字符與字符串(轉)


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. 比較:

  (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 對象內的字符。

 

 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM