我有這樣的:字符串分割到多維數組
String s = "abcd,efgh,ijkl";
我想將其轉換成該編程:
String[,] s = {{"ab","cd"},{"ef","gh"},{"ij","kl"}};
字符串的長度可變的。誰能告訴我,我該怎麼做?
我有這樣的:字符串分割到多維數組
String s = "abcd,efgh,ijkl";
我想將其轉換成該編程:
String[,] s = {{"ab","cd"},{"ef","gh"},{"ij","kl"}};
字符串的長度可變的。誰能告訴我,我該怎麼做?
分成String[][]
可以做這樣的:
var res = s.Split(',')
.Select(p => Regex.Split(p, "(?<=\\G.{2})"))
.ToArray();
轉換爲String[,]
需要額外的循環:
var twoD = new String[res.Length,res[0].Length];
for (int i = 0 ; i != res.Length ; i++)
for (int j = 0 ; j != res[0].Length ; j++)
twoD[i,j] = res[i][j];
二維部分要求所有由,
分開的字符串具有相同的長度。另一方面,陣列陣列可以是「鋸齒狀的」,即行可以具有不同的長度。
+1不錯!但是,res是長度爲3的數組的數組,而不是2(兩個字符串和空字符串)。 –
你可以用LINQ
做s.Split(',').Select(
x => new string[2] { x.Substring(0, 2), x.Substring(2, 2)}
).ToArray();
或者你可以進行循環
String s = "abcd,efgh,ijkl";
var l = new List<string[]>();
for (int i = 0; i < s.Length; i += 5)
l.Add(new string[2] { s.Substring(i, 2), s.Substring(i + 2, 2) });
String[][] sa = l.ToArray();
做這個
using System.Linq;
var s = "ab,cd;ef,gh;ij,kl";
var a = s.Split(';').Select(x=>x.Split(',')).ToArray()
或擴展方法
var a = "ab,cd;ef,gh;ij,kl".ToTwoDimArray();
public static class StringExtentions
{
public static string[][] ToTwoDimArray(this string source, char separatorOuter = ';', char separatorInner = ',')
{
return source
.Split(separatorOuter)
.Select(x => x.Split(separatorInner))
.ToArray();
}
}
非常感謝你 –
海事組織這是這裏最乾淨的答案 –
是否需要一個二維數組,或將'的String [] []'的工作呢? – dasblinkenlight