我知道用Split可以把一个大字符串分割为字符串数组, 比如 string s="1-2-3-4-5";   string[] sa=s.Split('-');
但是现在我有一个比较规则的字符串 s="1-2-3,4-5-6,7-8-9,10-11-12";  我现在想放入一个 string[,] sa 中,先通过','分割为一维,每一维再通过'-'分割.
能否写成一行的语句? 这是每个二维中元素个数都相同的情况.极端的是 s="1-2-3,4-5,6-7-8-9" 这样的,能否方便放入一个 string[][] sa 中?
顺便问一下,我 string[] sa中有数据,我可以通过 sa.Length 取得元素个数, 而 string[,] sa 及 string[][] sa 中我如何取得每一维的元素个数?谢谢!

解决方案 »

  1.   

    这个没办法写成一个语句,因为string[] sa=s.Split('-'); 返回的是一个数组,你需要遍历这个数组再分割字符为'-'的数字出来了。
    string[][] sa 中一组元素的个数用sa[1].Length这样就可以了。
      

  2.   


    string str="1-2-3,4-5,6-7-8-9";
    string[] splits = str.Split(',');
    List<string[]> strings = new List<string[]>();
    foreach (string s in splits)

         strings.Add(s.Split('-'));
    }string[][] stringArray = strings.ToArray();//可以转换为string[][]
      

  3.   

    一条语句是不行的,参考以下:            string s = "1-2-3,4-5,6-7-8-9";
                string[] temp = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                string[][] result = new string[temp.Length][];
                for (int i = 0; i < temp.Length; i++)
                {
                    result[i] = temp[i].Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
                }
      

  4.   

    一条肯定搞不定的得做循环啊。取数组长度可以写成sa[i].Length
      

  5.   

                string s = "1-2-3,4-5,6-7-8-9";            string[]ss = new string[s.Split(',').Length];
                string[][]sa = new string[ss.Length][];
                ss = s.Split(',');            for(int i=0;i<ss.Length;i++)
                {
                    sa[i] = ss[i].Split('-');
                }
    顺便问一下,我 string[] sa中有数据,我可以通过 sa.Length 取得元素个数, 而 string[,] sa 及 string[][] sa 中我如何取得每一维的元素个数?谢谢!
    拿sa[][]举例   sa[0].length就能取出一维数组的元素
      

  6.   

    var str = "1-2-3,4-5,6-7-8-9";
    var strArray = str.Split(',');
    var result = new String[strArray.Length][];for (var i = 0; i < strArray.Length; i++)
    {
        var subArray = strArray[i].Split('-');
        result[i] = new string[subArray.Length];    for (var j = 0; j < subArray.Length; j++)
        {
            result[i][j] = subArray[j];
        }
    }
    一种傻瓜式的实现
      

  7.   


    protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = "1-2-3,4-5,6-7-8-9";
            Label2.Text = GetString(ddt());
        }    private string[][] ddt()
        {
            string str = "1-2-3,4-5,6-7-8-9";
            string[] strArray = str.Split(',');
            string[][] result = new string[strArray.Length][];        for (int i = 0; i < strArray.Length; i++)
            {
                string[] subArray = strArray[i].Split('-');
                result[i] = new string[subArray.Length];            for (int j = 0; j < subArray.Length; j++)
                {
                    result[i][j] = subArray[j];
                }
            }        return result;
        }        // {{1,2,3},{4,5},{6,7,8,9}}
        private string GetString(string[][] strArr)
        {
            string str = "";
            for (int i = 0; i < strArr.Length; i++)
            {
                if (str != "")            
                {
                    str = str + "," ;
                } // end of if (str != "")            for (int j = 0; j < strArr[i].Length; j++)
                {
                    if (j == 0)
                    {
                        str += strArr[i][j].ToString();
                    }
                    else
                    {
                        str = str + "-" + strArr[i][j].ToString();                } // end of if (str == "")            } // end of for (int j = 0; j < strArr[i].Length; j++)        } // end of for (int i = 0; i < strArr.Length; i++)        return str;
        }
      

  8.   


                double[,] a = new double[,] { { 1, 2, 3 }, { 1, 2, 3 }, { 3, 2, 1 }, { 1, 2, 3 } };
                Console.WriteLine("当前行{0},共有{1}列", a.GetLength(0), a.GetLength(1));            int[][] p = new int[3][];
                p[0] = new int[7];
                p[1] = new int[5];
                p[2] = new int[9];
                Console.WriteLine("{0},{1},{2},{3}", p[0].Length, p[1].Length, p[2].Length, p.Length);