1

我有一个名为 str 的数组,它由一系列逗号分隔的对组成。例如,str[0] 是“比尔,约翰”。我试图遍历 str 并将逗号处的每一对拆分为名为 First 和 Second 的数组。我很难做到这一点,如果有人可以提供帮助,我将不胜感激。这是我正在使用的代码:

while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

我遇到的问题是第一[a] 和第二[a] 行。我在弄清楚这些变量应该是什么数据类型时遇到了麻烦,似乎对于我在 while 循环之前声明它们的每种类型都有不同的错误。

以下是我在循环中的变量实现上遇到的错误:
如果我将它们声明为数组:“无法将 [] 索引应用于‘System.Array’类型的表达式”

Array first;
Array second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as ints:“无法将 [] 索引应用于‘int’类型的表达式”

int first;
int second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

作为字符串:“不能将属性或索引器'string.this[int]'分配给-它是只读的”

string first;
string second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as vars:“必须初始化隐式类型的局部变量”(此错误在声明中,而不是在循环本身中。如果我初始化它,它会隐式转换为上述数据类型之一并抛出与它们相关的错误我提过)

var first;
var second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}
4

2 回答 2

3

基于新编辑:

好的,从不使用 Array 类型。它是内部的。要使用数组,您需要使用方括号表示法(这看起来很奇怪,但这来自 C、C++ 和 Java。)

看起来像这样:

string [10] first;

但是,在更现代的 C# 中,您可以使用泛型。它们只是在现代面向对象的世界中更有意义。要使用它们,您需要指定它们操作的类型。在许多方面,它们的行为就像您期望数组可以工作但具有附加功能一样。要使用它们,在您的示例中,它看起来像这样:

ArrayList<string> first = new ArrayList<string>();
ArrayList<string> second = new ArrayList<string>();

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first.Add(Pairs[0]);
    second.Add(Pairs[1]);
}

在 C# 中执行此操作的简单方法是使用 foreach 循环。

int index = 0;

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first[index] = Pairs[0];
    second[index] = Pairs[1];
    index++;
}

但是,您的代码可以工作——除了我看不到长度的来源。也许你的代码应该是这样的?

int a = 0;
while (a < str.Length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}
于 2013-03-26T04:26:14.003 回答
0

试试这个

string[] str = new string[1];

        str[0] = "Bill,John";

        string[] first = new string[1];
        string[] second = new string[1];
        string[] pairs = new string[1];

        int a = 0;
        while(a<str.Length)
        {
            pairs = str[a].Split(',');
            first[a] = pairs[0];
            second[a] = pairs[1];
            Console.WriteLine(first[a] + " - " + second[a]);
            a++;
        }

        int i = 0;
        foreach (string item in str)
        {
            pairs = item.Split(',');
            int k = pairs.Count();
            first[i] = pairs[0];
            second[i] = pairs[1];
            Console.WriteLine(first[i] + " - " + second[i]);
            i++;
        }
于 2013-03-26T06:01:49.530 回答