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

时间:2015-06-02 18:13:15

标签: c# arrays string split

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列为@MappedSuperclass public abstract class Record { @EmbeddedId private RecordPk id; @MapsId("headerPk") @ManyToOne @JoinColumns({ @JoinColumn(name="FK_TRANSMISSION_ID", referencedColumnName="FK_TRANSMISSION_ID"), @JoinColumn(name="MAILBOX_ID", referencedColumnName="MAILBOX_ID"), @JoinColumn(name="TRANSMISSION_TIME", referencedColumnName="TRANSMISSION_TIME") }) private VoucherHeader header; .... .... } ! 目前我收到此错误:

  

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

2 个答案:

答案 0 :(得分:1)

我会做出以下更改:

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

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

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

的元素来设置它的值
AdvListKeys[i] = OrKeys;

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

答案 1 :(得分:0)

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

但使用Linq

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