首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教一个数组的有关问题

2012-03-18 
请问一个数组的问题.我知道用Split可以把一个大字符串分割为字符串数组, 比如 string s1-2-3-4-5strin

请问一个数组的问题.
我知道用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 中我如何取得每一维的元素个数?谢谢!

[解决办法]
这个没办法写成一个语句,因为string[] sa=s.Split('-'); 返回的是一个数组,你需要遍历这个数组再分割字符为'-'的数字出来了。


string[][] sa 中一组元素的个数用sa[1].Length这样就可以了。
[解决办法]

C# code
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[][]
[解决办法]
一条语句是不行的,参考以下:
C# code
            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);            }
[解决办法]
探讨
一条语句是不行的,参考以下:
C# codestrings="1-2-3,4-5,6-7-8-9";string[] temp=s.Split(newchar[] {','}, StringSplitOptions.RemoveEmptyEntries);string[][] result=newstring[temp.Length][];for(inti=0; i<temp.Length; i++)
{
result[i]=temp[i].Split(newchar[] {'-'}, StringSplitOptions.RemoveEmptyEntries);
}

[解决办法]
C# code
            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('-');            }
[解决办法]
C# code
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];    }}
[解决办法]
C# code
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;    } 


[解决办法]

C# code
            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); 

热点排行