c#語言基礎編程—string

引言

在c#中經常會有相關的string的操作,string類型爲引用類型,集成於Object,所以會有四個方法。詳情可見

值類型和引用類型的區別
裏面詳細介紹了,值類型和引用類型的區別和應用場合,所以在應用中爲提高程序效率,儘量減少裝箱和拆箱操作。

string類方法彙總

string (char[]) 使用指定的字符串數組構建一個新的string對象。

int Compare(string a,string b,bool case) 比較字符串a,b,case爲true時表示不區分大小寫。
bool EndsWith(string) 確定當前字符串是否以指定的字符串結尾 bool StartsWith(string) 確定當前字符串是否以指定的字符串開頭
int IndexOf() 返回指定的字符或字符串在當前字符串中的位置int LastIndexOf() 返回指定字符或字符串的最後一個匹配項位置string Insert(int,string) 在當前的字符串中插入一個指定的字符串string Replace(string,string) 字符串替換
string Remove(int,int) 從指定位置開始刪除指定個數的字符
ToUpper() ToLower() 字符串大小寫轉換
string SubString(int,int) 返回從指定位置開始指定個數的字符串

常見的例子

  • 1、講字符串轉化爲數組。

接收用戶輸入的字符串,將其中的字符以與輸入相反的順序輸出。”abc”→”cba“.

 private static string MyReverse(string msg)
    {
       char[] chars = msg.ToCharArray();//
      for (int i = 0; i < msg.Length / 2; i++)
       {
         char ch = chars[i];
         chars[i] = chars[msg.Length - 1 - i];
         chars[msg.Length - 1 - i] = ch;
        }
  return new string(chars);
  }
  • 2、講字符串分割開

”2012年12月21日”從日期字符串中把年月日分別取出來,並反方向輸出到控制檯。

 Console.WriteLine("請輸入日期:");
 string date = Console.ReadLine();
 string[] parts = date.Split(new char[] { '年', '月', '日' });//當有多個分隔符時,先生成分隔符的數組傳入。Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)後面是去除字符串數組的空字符串。
  for (int i = 0; i < words.Length; i++)
   {
     words[i] = MyReverse(words[i]);
   }
   //此處Join得到體現,傳入字符串數組,並連接在一起。
string full = string.Join(" ", words);
 Console.WriteLine(full);
  • 3、IndexOf應用

統計“小李,你好啊!在呢?你現在在哪工作啊?”中“在”出現 的次數

 string msg = 小李,你好啊!在呢?你現在在哪工作啊?";
 string defaultWord = "在";
 int count = 0;
 int index = 0;
while ((index = msg.IndexOf(defaultWord, index)) != -1)
      {
        count++;
        index = index + defaultWord.Length;
       }
    Console.WriteLine("次數是:{0}", count);
    Console.ReadKey();

注意點:
string = null; //不分配內存
string = “”; //分配字節爲0的內存

在引用中,沒有初始化時,系統默認爲null,這是沒有分配內存,對它進行操作,會報錯。
String是CLR(運行時庫)的類型名字,而string是C#中的關鍵字.其實C#在編譯時,會增加代碼(下面列出的),將string轉換成System.String.兩者其實是一樣的,但是在c#中用String中,需要添加命名空間,但是string不需要。

string和byte[]的轉化

在程序中獲取數據時,經常存在byte[]與string的轉化,此處講講,其實就是應用:System.Text.Encoding。
比如:
string類型轉成byte[]:

byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

byte[]轉成string:

string str = System.Text.Encoding.Default.GetString ( byteArray );

string類型轉成ASCII byte[]:

(”01” 轉成 byte[] = new byte[]{ 0x30,0x31})

byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );

ASCIIbyte[]轉成string:

(byte[] = new byte[]{ 0x30, 0x31} 轉成”01”)

string str = System.Text.Encoding.ASCII.GetString ( byteArray );

string和StringBuilder

String 對象是不可改變的。每次使用 String 類中的方法之一或進行運算時(如賦值、拼接等)時,都要在內存中創建一個新的字符串對象,這就需要爲該新對象分配新的空間。而 StringBuilder 則不會,在需要對字符串執行重複修改的情況下,與創建新的 String 對象相關的系統開銷可能會非常昂貴。如果要修改字符串而不創建新的對象,則可以使用 System.Text.StringBuilder 類;例如,當在一個循環中將許多字符串連接在一起時,使用 StringBuilder 類可以提升性能。
其實就是長字符串操作時用stringBuilder,其實string.Format內部就是用的stringbuilder。

  • 字符串初始化
StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!",   25);  // 方式1 
MyStringBuilder.Capacity   =   25;  //方式2

EnsureCapacity 方法可用來檢查當前 StringBuilder 的容量。如果容量大於傳遞的值,則不進行任何更改;但是,如果容量小於傳遞的值,則會更改當前的容量以使其與傳遞的值匹配。
也可以查看或設置 Length 屬性。如果將 Length 屬性設置爲大於 Capacity 屬性的值,則自動將 Capacity 屬性更改爲與 Length 屬性相同的值。如果將 Length 屬性設置爲小於當前 StringBuilder 對象內的字符串長度的值,則會縮短該字符串。

  • 修改字符串

方法名 使用
StringBuilder.Append 將信息追加到當前 StringBuilder 的結尾
StringBuilder.AppendFormat 用帶格式文本替換字符串中傳遞的格式說明符
StringBuilder.Insert 將字符串或對象插入到當前 StringBuilder 對象的指定索引處
StringBuilder.Remove 從當前 StringBuilder 對象中移除指定數量的字符
StringBuilder.Replace 替換指定索引處的指定字符

  • 修改詳情介紹
    Append
    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! 顯示到控制檯。

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

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

此示例將 Hello World? 顯示到控制檯。
將Stringbuilder串轉換爲string形式
string = StringBuilder.toString();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章