将字符串输入分割成锯齿数组

本文关键字:数组 分割 字符串 输入 | 更新日期: 2023-09-27 17:52:38

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的长度定义的行(由'|'分隔),并且存储在锯齿数组中的值将是{"glu", "com"}列1和{"inf", "ina"}列2!目前我得到这个错误:

错误2无效的等级说明符:期望的','或']'有人能帮忙吗?

将字符串输入分割成锯齿数组

我将做以下更改:

在循环之外实例化你的2d数组

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

因为AdvListKeys基本上是一个数组的数组,你可以通过将OrKeys中的值赋给AdvListKeys中的元素来设置它的值

AdvListKeys[i] = OrKeys;

你不需要第二个循环来做这个(在j上迭代的那个)

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

但是用Linq

更容易做到这一点
string[][] AdvListKeys = key.Split(',')
                            .Select(o => o.Split('|'))
                            .ToArray();