Windows7 Pro, Visual Studio 2013 Expressの組み合わせで、Formアプリケーションを作っています。
配列に配列が含まれているかどうか知りたいです。
//検索元の配列
string[] array = new string[] { "red", "blue", "white", "blue", "red" };
ここからblue-whiteというならびを見つけたいです。
//"blue"の位置を取得する
int index1 = Array.IndexOf(array, "blue");
//index1は1
int index2 = Array.IndexOf(array, new string[]{"blue", "white"});
//index2は-1。
どうすればよいでしょう。
List<string>でも可能でしょうか?
よろしくおねがいします。
すこし書いてみました。
//検索元の配列
string[] array = new string[] { "red", "blue", "yellow", "pink", "green", "blue", "green" };
//"pink"の位置を取得する。3
int index1 = Array.IndexOf(array, "pink");
string[] subarray1 = new string[] { "blue", "yellow" };//成功する。1
string[] subarray2 = new string[] { "blue", "green" };//失敗する。-1
int indexarray1 = compareArray(array, subarray1);
int indexarray2 = compareArray(array, subarray2);
private int compareArray(string[] array, string[] subarray) {
int index = Array.IndexOf(array, subarray[0]);
bool IsSame = true;
if (0 < index) {
for (int i = 0; i < subarray.Length; i++, index++) {
if (array[index] != subarray[i]) IsSame = false;
}
}
if (!IsSame) return -1;
else return index-subarray.Length;
}
これを再帰的に実行すればよいのですが。こんな方向性でしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/13 03:52 編集
退会済みユーザー
2016/01/18 02:08
2016/01/19 02:02 編集