【问题标题】:Split string input into jagged array将字符串输入拆分为锯齿状数组
【发布时间】:2015-06-02 18:13:14
【问题描述】:
string[] listKeys = key.Split(',');
string[] OrKeys;
string[][] AdvListKeys;
for (int i = 0; i < listKeys.Length; i++)
{
    OrKeys = listKeys[i].Split('|');
    for (int j = 0; j < OrKeys.Length; j++)
    {
        AdvListKeys = new string[i][j];
        AdvListKeys[i][j] = OrKeys[i];
    }
}

我正在尝试将字符串"glu|com,inf|ina" 输入到C# 的锯齿状数组中,这样它的列将由listKeys 的长度定义(由逗号分隔)和由OrKeys 的长度定义的行(由“|”分割),存储在锯齿状数组中的值将是第 1 列的 {"glu", "com"} 和第 2 列的 {"inf", "ina"}! 目前我收到此错误:

错误 2 排名说明符无效:预期为 ',' 或 ']' 有人可以帮忙吗?

【问题讨论】:

  • 我不明白。您想为每个字符串关联一个键吗?如果您必须使用地图。

标签: c# arrays string split


【解决方案1】:

我会进行以下更改:

在循环之外实例化二维数组

AdvListKeys = new string[listKeys.Length][];

由于AdvListKeys 基本上是一个数组数组,您可以通过将OrKeys 中的值分配给AdvListKeys 的元素来设置它的值

AdvListKeys[i] = OrKeys;

您不需要第二个循环来执行此操作(迭代 j 的循环)

【讨论】:

    【解决方案2】:

    问题是您不能同时实例化锯齿状数组的两个维度。那是因为数组中的每个数组都可以有不同的长度。

    但是使用 Linq 更容易做到这一点

    string[][] AdvListKeys = key.Split(',')
                                .Select(o => o.Split('|'))
                                .ToArray();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2019-07-15
      • 2019-08-19
      • 2016-12-12
      • 2018-07-14
      相关资源
      最近更新 更多