配列内に指定された文字列や数値があるか検索する方法と
配列内のデータをソートする方法をご紹介します。
配列内の検索(文字列)
配列内に指定された文字列があるかどうか検索する方法です。
Dim fruit() As String = {"りんご", "みかん", "いちご"}
Dim i As Integer
i = Array.IndexOf(fruit, "りんご")
Console.WriteLine("「りんご」のインデックスは{0}です", i)
i = Array.IndexOf(fruit, "バナナ")
If i = -1 Then
Console.WriteLine("「バナナ」は見つかりませんでした")
End If「りんご」のインデックスは0です
「バナナ」は見つかりませんでした配列の中を検索するには、Array.IndexOfメソッドを使います。
第1引数に配列を指定
第2引数に検索するキーワードを指定します。
見つかれば、見つかった位置のインデックス番号が返ります。
配列は0から数えるので、この例の場合は0が返ります。
もし、見つからなかった場合は、-1が返ります。
配列内の検索(数値)と検索範囲指定
配列内に指定された数値があるかどうか検索する方法です。
Dim num() As Integer = {50, 20, 100, 60, 20, 70}
Dim i As Integer
i = Array.IndexOf(num, 20)
Console.WriteLine("「20」のインデックスは{0}です", i)
'配列の最後から検索
i = Array.LastIndexOf(num, 20)
Console.WriteLine("「20」のインデックスは{0}です", i)
'文字列で検索
i = Array.IndexOf(num, "20")
If i = -1 Then
Console.WriteLine("""20""は見つかりませんでした")
End If
'インデックス番号3から最後まで検索
i = Array.IndexOf(num, 20, 3)
Console.WriteLine("「20」のインデックスは{0}です", i)
'インデックス番号3から3要素分を検索
i = Array.IndexOf(num, 20, 3, 3)
Console.WriteLine("「20」のインデックスは{0}です", i)「20」のインデックスは1です
「20」のインデックスは4です
"20"は見つかりませんでした
「20」のインデックスは4です
「20」のインデックスは4です今度は数値の検索です。
同じくArray.IndexOfメソッドを使い、20の数値を検索します。
インデックス1の位置に20があるので、
インデックス番号として1が返ります。
配列の最後にも20のデータがありますが、
一番はじめに見つかったデータのインデックス番号を返します。
配列の最後から検索したい場合は、LastIndexOfメソッドを使います。
今度は最後から検索するので、インデックス番号として4が返ります。
今回扱っているのは、数値の配列データですが、
“20”と言う文字列データで検索しようとすると、
正常に検索できず、-1が返ります。
検索範囲を指定したい場合は、
IndexOfメソッドの第3引数と第4引数に指定します。
第3引数に、検索開始ポイント(配列のインデックス番号)
第4引数に、検索する数を指定します。
配列内のソート(昇順、降順)
Dim num() As Integer = {50, 20, 100, 60, 20, 70}
'昇順にソート
Array.Sort(num)
For Each d As Integer In num
Console.Write(d.ToString() & " ")
Next
Console.WriteLine()
'降順にソート
Array.Reverse(num)
For Each d As Integer In num
Console.Write(d.ToString() & " ")
Next20 20 50 60 70 100
100 70 60 50 20 20配列をソートするには、Array.Sortメソッドを使います。
引数に配列を指定します。
並び替え(ソート)した事によって、順番が入れ替わりました。
Array.Sort() と書くと、昇順で並べ替えを行います。
対して、降順で並び替えするには、Array.Reverseメソッドを使います。
しかし、
Reverseメソッドは、降順に並べ替えるメソッドではありません。
逆順に並び替えるメソッドです。
降順と逆順で何が違うかと言うと、
降順は数値の大きい順に並べ替えるのに対して、
逆順は、単に配列の終わりの項目から
先頭に向かって並び替えると言う意味になります。
ですから、Sortメソッドを呼ばずにいきなりReverseメソッドを使うと、
降順にならず、期待した結果が得られません。
まとめとして、降順で並び替えたい場合は、
まずSortメソッドで昇順に並び替えてから、
Reverseメソッドを使用する必要があります。
これで配列の検索とソート(並び替え)ができるようになりました。
