string[,] strSet = new string[,] { { "aa", "bb", "cc" }, { "dd", "ee", "ff"}, { "gg", "hh", "ii" } };
这是一个二维字符串数组,本人想知道“ee”在这个数组中的位置,该怎么做。
对于一维数组,可以用
Array.IndexOf(str, s)
确定字符串s在字符串数组str中的位置,二维数组有没有相似的做法?
谢谢大家
解决方案
10
class inPoint { public int x { set; get; } public int y { set; get; } public List<inPoint> ResList = new List<inPoint>(); public List<inPoint> getPoint(string[,] p_Arr,string Key) { for(int row=0;row<=p_Arr.GetUpperBound(0);row++) { for(int col=0;col<=p_Arr.GetUpperBound(1);col++) { if(p_Arr[row,col]==Key) { ResList.Add(new inPoint { x = row, y = col }); } } } return ResList; } } //调用 string[,] strSet = new string[,] { { "aa", "bb", "cc" }, { "dd", "ee", "ff"}, { "gg", "hh", "ii" }, { "ee", "pp", "qq"} }; inPoint p=new inPoint(); List<inPoint> list = p.getPoint(strSet, "ee"); foreach (inPoint p1 in list) { Response.Write(p1.x.ToString() + "--" + p1.y.ToString() + "<br />"); }
输出:
1–1
3–0
可以找到全部满足条件的位置坐标,在你原来基础上增加了一组数据
15
string[,] strSet = new string[,] { { "aa", "bb", "cc" }, { "dd", "ee", "ff" }, { "gg", "hh", "ii" }, }; var r = strSet.GetLength(0); var c = strSet.GetLength(1); int i; for (i = 0; i < strSet.Length; i++) if(strSet[i / r, i % c] == "ee") break; Console.WriteLine("[{0},{1}]", i / r, i % c);
10
二维数组没有一步到位的方法
1、本人写二维的查询方法,上面已经给出了。
2、把二维数组元素copy到集合,集合自带获取index方法。也可以用你的Array.IndexOf(str, s),先建一个有相同元素的一维数组,获取一维位置index,他在2维数组的位置position = (index/3 ,index%3 )。
1、本人写二维的查询方法,上面已经给出了。
2、把二维数组元素copy到集合,集合自带获取index方法。也可以用你的Array.IndexOf(str, s),先建一个有相同元素的一维数组,获取一维位置index,他在2维数组的位置position = (index/3 ,index%3 )。
5
混分魔王降临~