0

抱歉,但我对 Unity 中的编码非常陌生。我有一个 nx2 数组,如图所示:

var questans = new String[10, 10];
questans[0,0]="Hey How's it going?";
questans[0,1]="You know me Just chillin'";
questans[1,0]="Hello there friend";
questans[1,1]="Well met to you too!";
questans[2,0]="I like chocolate pudding";
questans[2,1]="Good for you";

我基本上需要编写一个可以遍历这个数组的 for 循环,并给我一个包含所有不同单词的数组。因此,输出应该是:[Hey, How's, it, going.....]

我编写了一个函数来执行此操作,但我无法拆分字符串,因为 Unity 使用 string.split 给我的代码一些奇怪的错误:

我曾写过:

var ff:String [] // Temporary variable. I'm just testing for the first string questans[0,0]
ff=quesans[0,0].Split(" "[0]);

但是,它给了我 System.String[] 作为输出......即使在迭代 ff 时也是如此。

有人可以给我一种方法,我可以如何遍历整个数组(我可以遍历它)并获得每个不同的单词,而无需手动为其编写 for 循环?

谢谢!!

4

2 回答 2

1

对数组集合使用Distinct方法,如此处所示。
独特价值 1
独特价值 2

这将对您有所帮助,并且您不需要任何粘性循环。

于 2012-12-02T07:12:00.597 回答
0

我要告诉你的第一件事是你的变量“ questans不是quesans ”。所以“ ff=quesans.... ”不应该工作。也许那是你的问题?如果不:

这其实很简单。从概念上讲,您所写的是一段工作代码。尝试这个:

var ff: String[questans.Length]; //Returned string array
var linenumber = 0; //Current line, 0-index
var spacecount = 0; //Current space in current line, 0-index
foreach (var line in questans)
{
    foreach (var spaceSplit in line.Split(" "))
    {
        ff[linenumber, spacecount] =  spaceSplit[spacecount];
        spacecount++;
    }
    spacecount = 0;
    linenumber++;
}

在这段代码中,我嵌套了两个 foreach 循环以捕获每行中的每个空格并返回一个由空格分隔的行数组数组。

另外,附带说明一下,在创建数组questans时,我建议您对其进行初始化并将其全部分配在同一代码行中。对于数组问题,我会这样做:

var questans: String[10, 10] = [["Hey How's It Going?",
        "You know me Just chillin'"],
        ["Hello there friend",
        "Well met to you too!"],
        ["I like choclate pudding",
        "Good for you"]];

编辑

如果你想在没有循环的情况下通过整个数组,那么我很茫然。对不起,但我怀疑有这样的方法。

于 2012-12-02T06:21:35.193 回答