char(賦值用單引號)
單獨字符
//char代表單獨的字符類型
char c = 'i'; //賦值用單引號
字符串(麻煩)
char[] ar = { 'h', 'e', 'l', 'l', 'o' };
由於用char寫字符串太麻煩,於是出現一個新類型來處理字符串——string。
string字符串(賦值用雙引號)
所有的對象怎麼創建的?都是“new 類();”這樣創建的。
只有字符串相當於比較特殊的類。“hello”相當於new了一個對象。
string str = "hello";
//string它本身也是個類。所以寫出“hello”,也相當於創建了一個字符串的對象。
把string類型轉成字符數組類型:
char[] cs = str.ToCharArray();
//等號右邊:對象的名字.方法的名字。表示調用這個對象的這個方法。
Console.WriteLine(cs[1]); //輸出字符數組裏的第二個字符。
因爲可以直接提取string裏的字符,所以一般不用轉成字符數組。
Console.WriteLine(str[1]); //輸出字符數組裏的第二個字符。
長度(最常用)
Console.WriteLine(str.Length); //顯示數組長度。此處Length是屬性。
截取(Substring兩種方式)
方式一:從某處開始截取,直到最後
//從第3個字符開始截取
Console.WriteLine(str.Substring(2));
//結果爲“hello”裏的llo
方式二:從某處開始截取,且要求截取幾個字符
//第一個2代表:從第3個字符開始。第二個2代表:截取2個字符長度。
Console.WriteLine(str.Substring(2,2));
//結果爲“hello”裏的ll
搜索(3種方式)
搜索字符串裏是否有“l”?
方式一:從頭開始搜索
//從頭搜索字符串,返回位置信息。查找不到返回負數。返回正數第一個l的位置
int index = str.IndexOf("l");
Console.WriteLine(index);
//因爲是hello里正數第一個l,所以結果爲2。
方式二:從尾部開始搜索
//從尾部搜索字符串,返回位置信息。查找不到返回負數。返回倒數第一個l的位置
index = str.LastIndexOf("l");
Console.WriteLine();
//因爲是hello裏到數第一個l,所以結果爲1。
方式三:只搜索字符串的包含關係(只要有即可)
//搜索字符串包含關係。即不需要返回值
bool res = str.Contains("l");
Console.WriteLine(res); //打印結果Ture or False
英文字母大小寫轉換
注意:寫在WriteLine()括號裏的方法,通常不會改變原本的值,它相當於重新開闢一塊內存。
轉成小寫
string str = "Hello CSharp";
Console.WriteLine(str.ToLower()); //轉成小寫,輸出
轉成大寫
Console.WriteLine(str.ToUpper()); //轉成大寫,輸出
刪除
刪除頭尾多餘的空格 (很常用)
無論多少個空格,只要在兩頭,都可以去除。
string str = " 小李飛刀 "; //此時字符串的頭尾有多餘的空格
Console.WriteLine(str);
//刪除頭尾的空格
Console.WriteLine(str.Trim());
刪除頭尾指定字符
方式一:Trim
//刪除頭尾的指定字符
Console.WriteLine(str.Trim('_'));
//刪除頭部的指定字符
Console.WriteLine(str.TrimStart('_'));
//刪除尾部的指定字符
Console.WriteLine(str.TrimEnd('_'));
方式二:Remove
//刪除從索引3開始的全部字符
Console.WriteLine(str.Remove(3));
//刪除從索引3開始的2個字符的長度
Console.WriteLine(str.Remove(3,2));
刪除空格與刪除指定字符的區別
插入(在第幾索引的前面添加)
string str = "_小李飛刀_";
//插入(在第幾索引的前面添加)。此處目的是變成"_小李_飛刀_"
Console.WriteLine(str.Insert(3,"_")) ;
//字符用單引號,此處是雙引號,代表此處可以插入字符串
分割(非常非常常用)
string str = "_小_李_飛_刀_";
//分割字符串(特別特別常用)
string[] strs = str.Split('_'); //分割成名叫strs的數組了
Console.WriteLine(strs[3]);
//結果:飛。第0索引是空,第1索引是小,第2索引是李,第3索引是飛,第4索引是刀,並且還有第5索引——空。
拼接
方式一:Concat
//把數組字符串拼接起來
Console.WriteLine(string.Concat(strs));
方式二:加號
Console.WriteLine("小"+"李");
方式三:使用字符串構造器去創建字符串
字符串構造器,算是一個新的類,這個類叫做StringBuilder。
它拼接字符不是使用加號,而是通過Append這個方法。
StringBuilder sb = new StringBuilder();
sb.Append("今天,"); //拼的第一個。這個方法可以無數次用
sb.Append("天氣");
sb.Append("不錯!");
//拼完之後想把它打印成普通的字符串,要使用ToString這個方法就可以將上面的方法轉成字符串。
Console.WriteLine(sb.ToString());
方式四:Join(用自定義字符拼接)
//把數組字符串用自定義字符拼接。此處用波浪線拼接
Console.WriteLine(string.Join("~",strs));
替換(可用於屏蔽關鍵字)
//替換字符 把_替換成*
Console.WriteLine(str.Replace('_','*'));
這個方法支持t替換成字符串,所以用雙引號即可
string str = " 小_ 李_ 飛_ 刀_";
//替換字符 把空格替換成無
Console.WriteLine(str.Replace(" ",""));
格式化
格式化字符
//格式化字符串
str = string.Format("1+1=2");
//注意此處Format方法不是str(對象名)調用,而是string(類名)來調用的,說明Format方法是個靜態的。
Console.WriteLine(str);
//結果:1+1=2
優點:佔位符
大括號裏的是佔位符,佔位符有幾位,後面的參數就要寫幾位。
str = string.Format("{0}+{1}={2}",1,1,2);
//結果:1+1=2
str = string.Format("{0}+{1}={2}",1,1,1+1);
//結果:1+1=2。
便於計算大數據
int a = 36000;
int b = 44000;
str = string.Format("{0}+{1}={2}",a,b,a+b);
//注意此處Format方法不是str(對象名)調用,而是string(類名)來調用的,說明Format方法是個靜態的。
Console.WriteLine(str);
//結果:36000+44000=80000
格式化日期
對佔位符有要求的話,加冒號。
日期的格式是yyyyMMdd(年月日),他們之間的分隔符隨意,此處用的槓和冒號。
str = string.Format("{0:yyyy-MM-dd hh:mm:ss}",DateTime.Now);
/*此處只有0一個佔位符,我們給它當前的日期。
DateTime(類名).Now(方法)說明是個靜態的。它的含義是返回當前的日期。
但這個時間只有格式化成我們規定的樣式,我們才能看懂。*/
Console.WriteLine(str);
//結果:2019-06-08 09:57:56
單例類
內部
單例
正常情況下,一個類可以實例化出多個對象。單例:一個類只能實例化出一個對象。
管理類:稚嫩有一個對象存在,會用到單例比較多。
員工:小王、小李
老闆:副總
聲音播放器:播放音樂的,播放音效的,播放環境音的
聲音管理器
//寫成單例類
public class PersonManager
//上面有一個類叫Person,這裏寫個類用於管理Porson。
{
private static PersonManager instance;
//private(私有的)static(靜態)person(類的名字)instance(翻譯爲:實例)
//想訪問私有的,便要寫一個同名(首字母大寫)的屬性了。
public static PersonManager Instance
{
/*屬性裏原本有Set和Get。其實是可以二選一的。
如果只有Set,說明只能賦值,不能取出來。
如果只是Get,說明只能取出來,不能賦值。單例的話,一般只寫Get。*/
get
{
//做一個判斷:如果變量默認是空
if(instance == null)
{
instance = new PersonManager(); //實例化了一個管理類
}
return instance; //返回
}
}
public Person[] persons;
//通過一個屬性:person類型的數組,叫persons。
}
外圍
//外界調用時
PersonManager.Instance.persons;
// PersonManager.Instance;
/*第二次調用時,因爲已經有第一次的返回值了,所以輸入的不是空,導致直接返回。
所以無論調用多少次,都是第一次產生的那個對象*/