私は色の配列を持っています。
Black[0]
White[1]
Blue[2]
Green[3]
Red[4]
Purple[5]
Orange[6]
Pink[7]
Silver[8]
色の配列のカウントを反復し、渡された文字列と比較する for ループがあります。この場合、文字列内の単一の色です。
private ushort? FindColor(SomeObject colorArray, string name)
{
for (ushort i = 0; i < colorArray.Count; ++i)
{
SomeObject someObject = colorArray[i];
try
{
if (someObject.Name == name)
return i;
}
}
return null;
}
文字列名が [i] の色と一致する場合、見つかった配列番号を返します。
必要なことは、名前がコンマで区切られた色の文字列になることです。そうかもしれませんRed,Purple
。
私がやりたいのは、colorArray を調べて、分割された各文字列の色が配列内で隣り合っているかどうかを調べることです。したがって、この場合、赤は 4 で見つかり、紫は 5 で見つかります。2 つの色が隣り合っているため、4 を返したいと思います。それ以外の場合、2 つの色が隣り合って見つからない場合は、null を返します。
private List<string> GetColors(string colorName)
{
if (colorName == null)
return new List<string>();
string[] parts = colorName.Split(',');
return parts.Select(p => p.Trim()).ToList();
}
private ushort? FindColor(SomeObject colorArray, string name)
{
var colors = GetColors(name);
for (ushort i = 0; i < colorArray.Count; ++i)
{
SomeObject someObject = colorArray[i];
try
{
????
for(int j = 0; j < colors.Count; j++)
{
if (someObject.Name == colors[j])
{
// found the first color of Red at [4]
// store in a temp variable ????
// back into the loop and found Purple at [5]
// Purple at [5] was found to be beside Red at [4] so return [4]
return i; // i in this case would be 4
// if the colors are not found beside each other then
return null;
}
}
}
}
return null;
}
このようなケースを確認するための最良の方法を推奨できる人はいますか?