C#基礎(1)
摘要:學習c#已經有一段歷程了,回顧之前所打過的代碼以及筆記,做些常用的總結,希望以後工作中如果用到,方便查找。當然,個人首要目的是這樣,加深印象的同時,可以練習一下打字速度。希望也 堅持。當然,如果對其他人能帶來一點點幫助的話,那更好啦。
本文涉及內容:
1、常用對字符串操作 2、集合 3、文件操作
1、常用對字符串操作:
a、字符串截取(Substring):
string str = "我愛中華人民共和國"; str = str.Substring(2, 4); //參數1:開始截取的索引(從0開始) 參數2:截取的長度
b、字符串以什麽開頭,以什麽結尾:
str.StartsWith("我"); str.EndsWith("國"); //返回true 或者false
c、字符串分割:比較常用,對字符串進行分割,常用於操作把一個字符串分成一個字符串數組,根據字符串的特點,選取需要的部分。
string serverData = "ok:操作成功"; string[] data = serverData.Split(‘:‘); // string[] data = serverData.Split(new char[] { ‘:‘ }, StringSplitOptions.RemoveEmptyEntries);//這種方式可以在char數組中多添加需要截取掉的字符串 for (int i = 0; i < data.Length; i++) { Console.WriteLine(data[i]); } //結果為: ok 和 操作成功
d、比較兩個字符串是否一致並忽略大小寫(Equals:參數2可以選擇多種比較方式,常用:比較兩個object
string str1=abc; string str2 = abC; bool b = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); //結果為:true
e、字符串數組插入操作:Join
string[] str = { "張三", "李四", "王五"}; string str2 = string.Join("|", str); //輸出結果為:張三|李四|王五 插入到每個數組元素的中間
小結:字符串還有很多操作,使用頻率比較高的就上面這些,當然,c#一些用方都可以點出來然後看文字說明去使用
2:集合
集合是一個很常用的東西 。常用的集合有:鍵值對集合,泛型集合
ArrayList(集合):可添加數據
Hashtable(鍵值對集合):鍵值可以為任何形式的數據類型
Dictionary鍵值對集合(常用):
Dictionary<int, string> dic = new Dictionary<int, string>(); //涉及到鍵必須為int類型,值必須為string類型 dic.Add(1, "張三"); //添加數據 dic.Remove(1); //傳進來的是鍵標 dic.Clear(); //清空集合
List泛型集合(常用):
List <int> list= new List<int>(); //聲明 list.Add(1); //添加數據 list.AddRange(new int[] { 3,4,5,6,7,8,9}); //添加集合 list.RemoveAt(2); //索引下標從0開始 list.RemoveRange(2, 4); //從索引2開始,移除4個元素 list.Clear();//清空集合
集合比較常用,用法也相對比較簡單。常用的有很多,比如:Contains(是否包含) FirstOrDefault:第一個元素,.ToArray :轉換為數組 等 可以list然後點出來,再根據說明
3、文件操作
摘要:文件操作是一些項目中必不可少的,對一些上傳圖片的路徑操作,對寫入的一些文檔,日誌文件進行保存之類
a:專門操作路徑的path類 :(靜態類)
using System.IO; string str = @"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\es\C#.txt"; Path.GetFileName(str); //獲取文件名 Path.GetFileNameWithoutExtension(str); //沒有擴展名的文件名 Path.GetExtension(str); //獲取文件擴展名 Path.GetFullPath(str); //獲取文件絕對路徑 Path.Combine(@"c:\a\b\c\", @"f\.avi"); //把兩個路徑融合 Path.GetDirectoryName(str); //獲取路徑名,沒有文件名
涉及到路徑就使用Path,有時候經常和File混合,可能是個人原因
b:File讀寫數據
(1):以字節形式讀取:
byte[] bte = File.ReadAllBytes(@"C:\Users\xsh.cs\Desktop\new.txt"); string str = Encoding.Default.GetString(bte); //轉換為字符串(最適用) 還有:UTF8Encoding.Default.GetString(bte)、Encoding.GetEncoding("GB2312").GetString(bte)
、ASCIIEncoding.Default.GetString(bte) 等多種編碼格式
(2):逐行讀取
string[] st = File.ReadAllLines(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default); //逐行讀取內容 遍歷數組 可對每一行進行操作
(3):以文本 形式讀取
string str = File.ReadAllText(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default); //以文本形式讀取 對於圖片類,視頻文件類 等其他類 不適用
(a):以字節形式寫數據
byte[] by = Encoding.Default.GetBytes(str); File.WriteAllBytes(@"C:\Users\Path\new.txt",by);
(b):以數組的形式逐行寫數據
File.WriteAllLines("new.txt",strArray); //strArray為定義的數組
(c):整體寫入
File.WriteAllText("new.txt",str); //整體寫入,最常用的方式 str為字符串
(d):追加
File.AppendAllText("new.txt",str); File.AppendAllLines("new.txt",str); //逐行追加
c:FileStream文件流
(1):讀取文件:
using (FileStream fread= new FileStream(@"C:\Users\path.txt", FileMode.OpenOrCreate, FileAccess.Read)) { byte[] buffer = new byte[1024 * 1024 * 2]; int r = fread.Read(buffer, 0, buffer.Length); //返回當前讀取的有效字節數 string str = Encoding.Default.GetString(buffer, 0, r); //解碼 } //參數①: 針對哪一個文件 寫文件路徑 //參數②: 要對此文件進行怎樣的操作 //參數③: 要對此文件的數據進行怎樣的操作
(2):寫文件:
using (FileStream fwrite = new FileStream(@"C:\Users\文件流.txt",FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = Encoding.Default.GetBytes(str); //str為字符串 fwrite.Write(buffer, 0, buffer.Length); }
(3):復制文件:
string path = @"C:\Users\video.avi"; string newpath = @"C:\Users\videoNew.avi"; //創建一個負責讀取的文件流 using (FileStream fread = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) { //創建一個寫入文件的文件流 using (FileStream fwrite = new FileStream(newpath, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 5]; while (true) //文件過大,可能一次讀寫不完,需要循環 { int r = fread.Read(buffer, 0, buffer.Length); if (r == 0) //當讀取不到字節時,說明已經完畢,則跳出循環 { break; } else fwrite.Write(buffer, 0, r); } } Console.WriteLine("復制成功!"); }
為什麽使用using? 當一個類最終繼承IDisposable 這個接口,就需要到釋放資源空間,用using就可以自動釋放資源空間,提高效率,減少代碼量
d:StreamReader和StreamWriter
//讀取 using (StreamReader sRead = new StreamReader(@"C:\Users\Path.txt", Encoding.Default)) { while (!sRead.EndOfStream) //指示當前流的位置是否為結尾 { Console.WriteLine(sRead.ReadLine()); } } //寫入 using (StreamWriter stwr =new StreamWriter(@"C:\Users\Path.txt",true,Encoding.Default)) { stwr.Write(str); }
小結:兩種方式都可以對文件進行讀寫操作,相對Stream用的比較多一點,用法很簡單,根據write 或者read的方法,傳入相應的參數即可。
總結:c#有很大一部分基礎語法,最重要的會使用微軟封裝的一些類,一些方法。看這些類的方法的重載。如果有vs的那些語言包,都可以看每一個方法重載是做什麽的,然後相應的使用。傳入相應需要的參數,看返回值。
C#基礎(1)