DAY 08 型別常用方法
型別常用方法
分享一些個人常用的方法,本文會講解用法與用途,讓新手上手時可以快速使用。
數值型別
Parse
數值型別都會有一個 Parse 方法,可以使字串轉換成數字型別,若字串內容不是數字則會使程式掛掉如
1 | int a1 = int.Parse ("16"); // 成功得到 16 |
TryParse
當欲轉換成數字的內容是使用者定義的話,我們無法限制他輸入的內容,所以我們並需改用另一種方法 TryParse,這方法傳回的值是 bool,並給出一個被 out 寫入的變數如
1 | int number = 1; // 先定義一個 number 去接收 TryParse 成功轉換後的值。 |
此方法可以當作過濾錯誤的輸入值或資料來源的錯誤資料如
1 | string input = Console.ReadLine (); |
out 寫入的變數也可以在呼叫方法時初始化。
ToString
把數值轉換成字串
1 | int number = 5; |
上面講的方法都是型別的靜態方法,也就是由型別 int. 或者 double. 所呼叫的方法,而 ToString 則是型別的原生方法,也就是由變數 number. 所呼叫的方法。
題外話:我不知道用原生方法這個詞好不好,主要是為了與之後的擴充方法做個差異。
從數值轉換成字串時,我們可以帶參數使轉換的字串是貨幣、百分比或者換成其他進制表示等。
1 | int number = 516; |
更多的轉換方式可以到參考連結看
個人習慣如果不是要轉成特定樣子,而是單純的使數字轉型,則會使用隱性轉型的方式
1 | int number = 6 |
加一個空字串,因為運算子 + 使 number 變成字串後與空字串相加成 str。
字串
字串的處理就會比數值多很多了,如尋找、替換、切割、補零等等功能。
Format
主要是字串的拼接
1 | string a1 = "555"; |
Format 是用括弧內的數字,從 0 開始數對照到後面的引數內容,要注意的是括弧的數值一定要對照到後面的引數,無法像這樣string.Format ("a1 = {8}", a1);
,找不到第 8 + 1 個引數會使程式錯誤,但如果是給予超過數量的引數不會造成程式錯誤。
而講到 Format 是不是似曾相識的感覺,很像我之前寫的$
語句,在字串前面加入$
就是一種 Format 的方法,可以把上面的程式碼改成$"a1 = {a1}";
,是不是更好讀了,雖然實際上還是做了跟 Format 一樣的行為,但讓程式碼讀得時候,如果引數一多就不用在那邊連連看了。
想知道更多可以參考連結的字串內插補點。
題外話:因為$
我本身不再用 Format,對我在初學時是沒有看過這符號的。
Null 檢查方式
String.IsNullOrEmpty (value)
相當於 (value == null || value == String.Empty)
String.IsNullOrWhiteSpace (value)
相當於 (String.IsNullOrEmpty (value) || value.Trim ().Length == 0)
為什麼需要做 Null 檢查呢?因為原生方法如果變數內容是 null 的話是會報錯的,這邊簡單比較兩種方式的差別,個人是都只用最後一種啦。
Contains
這邊開始就是原生方法了,檢查字串是不是包含某個字元或字串,傳回值為 bool。
1 | string str1 = "ABC"; |
PadLeft & PadRight
補充字元,因為數值型態前面不會帶 0,如果需要以 0 開頭的話則需要轉換成字串,並將開頭補 0,或者補空白排版等用途。
1 | string str = "516".PadLeft (5, '0'); |
前面一位為數量,後面為補上的字元,可不填,不填時為補充空白。
PadRight 則是從右邊補字元。
Replace
取代字串內容,如果需要將 1 2 3 改成中文數字一、二、三。
1 | string str = "123".Replace ("1", "一").Replace ("2", "二").Replace ("3", "三"); |
Split
字串切割。
string.Split (params char[] separator)
用字元做為切割,不加任何條件版本。
string.Split (string[] separator, int count, StringSplitOptions options)
separator 為切割的字元組或字串組 char[] or string[]
count 為分割最大數量
1 | "stringsplit".Split (new char[]{'s'}, 1); // {"stringsplit"} |
options 為是否包含空白字元
- StringSplitOptions.None => (預設)包含
- StringSplitOptions.RemoveEmptyEntries => 不包含
1 | "stringsplit".Split (new char[] { 's' }, 2, StringSplitOptions.RemoveEmptyEntries); // {"tring","plit"} |
Substring
擷取字串。
1 | string str = "123456789".Substring (1, 5); |
從 0 開始數,所以 1 的位置是 2,然後往後數五個字元。
也可以不加數量
1 | string str = "123456789".Substring (1); |
Trim
移除開頭與結尾字元,直到下個字元不等於該字元,如果不給引數則移除空白。
1 | string str = "9129345678999".Trim ('9'); |
TrimStart 只移除開頭字元
TrimEnd 只移除結尾字元
一些小結論
今天大致上介紹了本人比較常見的型別方法,雖然還滿猶豫要寫出來的,但日後使用的時候又需要解釋,不如就…
昨天在講解方法的時候沒有提到,VSCode 可以按 F12 查看方法,所以上述的所有方法都可以按 F12 顯示類別的方法,因為是引用 dll 所以沒有完整的 code,但可以看該類別的所有方法,所以除了我舉例的這些還有很多方法。
類別是什麼之後也會提到,還有如何增加類別的原生方法,也就是擴充方法。
感謝閱讀。