我有一系列颜色。
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 处。因为它们彼此相邻,所以我想返回 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;
}
谁能推荐检查这种情况的最佳方法?