请教一个数组的有关问题
请问一个数组的问题.
我知道用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这样就可以了。
------解决方案--------------------
我知道用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# 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; }