日期:2014-05-18  浏览次数:20917 次

请问一个数组的问题.
我知道用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