對於陣列裡的內容值除了把資料存進去外,若想要知道陣列維度、陣列大小、複製陣列的值到另一個陣列中、清除陣列的值等等的相關處理,甚至比較常用到的可能還需要做資料排列、查找資料等等,此時C#有一些屬性方法可以幫助到我們,不用寫複雜的迴圈,來看一看有哪些吧~
一、資料排列
由小到大排列語法:
Array.Sort(陣列名稱);
由大到小排列語法:
Array.Reverse(陣列名稱)
在做這個排列的時候都只能是一維陣列的狀況下喔!
若想要由大到小排列就必須先做Sort()後,再做Reverse()唷!
這邊用幾個例子看一下:
1.整數排列
有沒有看到兩者的差異了,還有另外一種排序就是有有兩個陣列一起排列的,是按照索引值一起排列的哦~我們來看一下:
可以看到一開始我給予的score陣列的分數是沒經過排列,再看一下name陣列的名字,經過Sort()排列,當score和name的陣列放在一起就是是相對應的小名96分、甜心50分...這樣的對應方式。
因為是將score陣列排在前面,所以sort()排列就會以score陣列為基準帶動著name的索引值去做排列。
2.字串排列
這邊字串的排列會依照英文字母去做排列Sort()是由A~Z,先從第一個去做比對,接著再往後去做比對,比對完就會是Sort()排列出來的結果,想要由大到小,一樣再使用Reverse()就可以反過來了喔!
二、搜尋
【語法1】
變數名稱 = Array.IndexOf(陣列名稱 , 內容值)
這一個搜尋的方法通常也是以一個陣列為主,在指定的陣列中去做搜尋內容值的值,倘若找不到的話就會傳回「-1」,若找到就會顯示最前面第一個搜尋到的索引值。
【語法2】
變數名稱 = Array.IndexOf(陣列名稱 , 內容值 , 從第幾個索引開始)
這一個語法就是多了一個條件,就是從哪一個索引開始往後尋找,找到後也是顯示第一個找到的索引值。
【語法3】
變數名稱 = Array.IndexOf(陣列名稱 , 內容值 , 從第幾個元素開始 , 往後共要找多少元素)
這一個語法又再增加了一個條件,就是除了指定從哪個索引開始搜尋外,還多了從這個索引往後共要再找多少個索引,也是一樣顯示第一個找到的索引值。
那麼我們用例子來看一看
(1)尋找陣列有/無重複值
兩者結果一樣是因為搜尋狀況找到第一個就只會顯示第一個找到的索引值了,無論後面有沒有重複都已經不影響。
(2)找不到搜尋的值
(3)有設定起始位置
(4)有設定起始位置以及往後要搜尋的數量-有找到
(5)搜尋有設定起始位置以及往後要搜尋的數量-未找到
三、想知道陣列相關內容
後面就由大家自行動手操作囉~每一個都跟上面實例一樣都各別建立button和label實際操作看看這些有什麼不一樣,邊做邊學邊記憶。
1.想得到陣列維度
int 變數名稱 = 陣列名稱.Rank;
2.想得到陣列大小
int 變數名稱 = 陣列名稱.GetLength(指定的維度);
3.想要得到陣列所有維度總共的大小
int 變數名稱 = 陣列名稱.Length;
4.想要改變陣列大小
Array.Reise(ref 陣列名稱,陣列大小);
說明:
當我們修改陣列大小時,若比原本大,那麼值就會補0;若比原本小,則會遺失多餘的值,所以要修改的時候要注意!
5.想要複製陣列
原本陣列.CopyTo(要複製到的陣列,起始索引值)
說明:
將原本所有的值全部複製到另一個陣列中,從我們所設定的起始索引值開始。
6.想要刪除陣列中的值
Array.Clear(陣列名稱,起始索引值,要刪除的數量)
說明:
刪除的值會更改為0,會從起始索引值開始計算到我們設定要刪除的數量為止,其餘的值就不會改變。
四、擷取字串功能
對於字串部分,還有一個可以拆解字串的小功能就是「Split」,有時候這個非常好用,例如擷取取得當下的時間、擷取一大串的字、又或是程式代碼的溝通之類的就會使用到擷取字串這個功能。
那麼為什麼要放在陣列這邊呢?因為陣列也會用到跟擷取字串的功能哦!所以我就一並在這裡分享。
擷取字串語法:
字串.Split(‘間隔的字元’)
這個間隔的字元就像是摩斯密碼一樣,在密密麻麻的資料中拿取需要的字串,但是這個間隔的字元必須是一樣的才行哦!例如都是用「,」、「!」...隔開,就是只能用一種字元。
那陣列跟這個有何關聯?我們用個例子說明:
string color = “紅色&綠色&藍色&黃色&紫紅色&象牙白色&紫色”;
string[] arrayColor = color.Split(‘&’);
這樣的程式執行的結果就會是:
arrayColor[0] =紅色、arrayColor[1] =綠色、arrayColor[2] =藍色、arrayColor[3] = 黃色、arrayColor[4] = 紫紅色、arrayColor[5] =象牙白色、arrayColor[6] = 紫色
有沒有看到也可以利用Spilt擷取字串的方式來轉換成陣列哦!而且我覺得這個超級好玩可以玩摩斯密碼哈哈哈!
下一次會補充分享一個跟陣列很相近的List