2011-05-04 178 views
2

我有一个字符串的格式来:通过逗号分隔的字符串循环,分成多个数组?

div, v6571, 0, div, v8173, 300, p, v1832, 400 

欲这个字符串分割成多个阵列,对于上面的例子中我需要3个阵列,使得该格式将是这样的:

item[0] -> div 
item[1] -> v6571 
item[2] -> 0 

我知道我可以对字符串做一个.Split(',')并将其放入数组中,但这是一个大数组。对于上面的字符串示例,我需要3个具有上面提供的结构的数组。只是对字符串的迭代感到困惑!

谢谢!

+0

如果在组中和组内使​​用相同的分隔符,应该如何确定数组的组合? – Oded 2011-05-04 15:28:13

+1

我很困惑你的上面的例子不只是一个数组。它看起来像一个。 – Tejs 2011-05-04 15:28:39

+0

@Tejs - 这是一个数组,但他希望它分裂成多个数组。 – Oded 2011-05-04 15:29:36

回答

7

我不知道你在寻找什么,而是把上述三个单独的数组,我会做一些事情,如:

var primeArray = yourString.Split(,); 
List<string[]> arrays = new List<string[]>(); 
for(int i = 0; i < primeArray.Length; i += 3) 
{ 
    var first = primeArray[i]; 
    var second = primeArray[i+1]; 
    var third = primeArray[i+2]; 

    arrays.Add(new string[] {first, second, third}); 
} 

然后你就可以通过你的字符串列表迭代数组并做任何事情。

这的确假设你所有的字符串数组总是三个字符串 - 如果不是,你需要在primeArray上执行一个foreach并且手动编组你的数组。

下面是我使用的确切代码。需要注意的是它并没有真正从我原来的非编译版本改变什么:

var stringToSplit = "div, v6571, 0, div, v8173, 300, p, v1832, 400"; 
List<string[]> arrays = new List<string[]>(); 
var primeArray = stringToSplit.Split(','); 
for (int i = 0; i < primeArray.Length; i += 3) 
{ 
    var first = primeArray[i]; 
    var second = primeArray[i + 1]; 
    var third = primeArray[i + 2]; 
    arrays.Add(new string[] { first, second, third }); 
} 

当我检查这个在调试,它有三个预期阵列。

+0

这似乎工作,但它不会将最后一个数组(3组)添加到主数组。它只是添加了第一个2. – dmackerman 2011-05-04 15:47:13

+0

你是否通过调试走过了它?怎么了? – AllenG 2011-05-04 15:51:53

+0

现在就这样做。午休。 :) – dmackerman 2011-05-04 16:17:12

4

.Split(“,”)是你最好的选择。然后您可以修改该字符串数组以反映您需要的任何结构。

您可以使用正则表达式或其他方法,但对于此用例,没有任何性能为String.Split。

1

以下假设你的数组的长度是3的倍数:

var values = str.Split(',') 

string[,] result = new string[values .Length/3, 3]; 
for(int i = 0; i < params.Length; i += 3) 
{ 
    int rowIndex = i/3; 
    result[rowIndex, 0] = values [i]; 
    result[rowIndex, 1] = values [i + 1]; 
    result[rowIndex, 2] = values [i + 2]; 
} 

在我的头编译,但它应该工作。

1

只是让我理解你的权利,你需要将它们整理到:只有阵列 2)字符和数字 3)数字只

如果是这样

1)字符,你可以做到以下几点:

1)首先尝试用Int32.Parse 解析字符串,如果数字阵列 2)在商店成功捕获异常,并做一个正则表达式的数字 排序为其余2个阵列

希望它有帮助(:干杯!