循环逗号分隔的字符串,拆分成多个数组?

时间:2011-05-04 15:25:45

标签: c# asp.net arrays string

我有一个字符串格式:

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

我想将这个字符串拆分成多个数组,对于上面的例子,我需要3个数组,这样格式就是这样:

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

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

谢谢!

4 个答案:

答案 0 :(得分:8)

我不确定你到底想要什么,但是要将上面的内容变成三个独立的数组,我会做类似的事情:

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 });
}

当我在调试中检查时,它确实有三个预期的数组。

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

以下假设您的数组长度是三的倍数:

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];
}

在我的头脑中编译,但它应该有用。

答案 3 :(得分:1)

为了让我理解你,你需要将它们分类为:

1)仅字符数组 2)字符和数字 3)仅限数字

如果是这样,您可以执行以下操作:

1)首先尝试使用Int32.Parse解析字符串    如果成功存储在数字数组中 2)捕获异常并为数字执行正则表达式    排序到剩下的2个数组

希望它有所帮助(:干杯!