我知道用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 中我如何取得每一维的元素个数?谢谢!
但是现在我有一个比较规则的字符串 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 中一组元素的个数用sa[1].Length这样就可以了。
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[][]
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);
}
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就能取出一维数组的元素
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];
}
}
一种傻瓜式的实现
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;
}
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);