2012-07-17 76 views
-2

让我们假设我们有两个字符串数组返回索引

string[] array1 = {"aa", "bb", "cc"}; 
string[] array2 = {"bb", "aa", "cc", "bb", "aa", "cc"}; 

现在字符串BB在数组2是在ARRAY1的第二位置,从而,输出应为2

在AA数组2是在ARRAY1的第一位置,以便输出应为1

立方厘米在数组2是在ARRAY1的第三位置,以便输出应该是在数组2 3

BB是在塞康ARRAY1的d位置从而输出应为2

等..

所有这些输出的索引位置,应存储在数组..

知道怎样在C#的.NET做到这一点?

+0

请分享你的想法 - 你有什么尝试。 – NoviceProgrammer 2012-07-17 04:46:11

回答

1

事情是这样的:

int[] indicies = array2.Select(n => Array.IndexOf(array1, n)).ToArray(); 

这将项目的array2元素作为其indicies的序列array1,并将结果转换为数组。


如在评论中指出,原来的要求是“AA”映射到值1,尽管其在ARRAY1索引为0由1抵消所计算的索引将解决此:

int[] indicies = array2.Select(n => Array.IndexOf(array1, n) + 1).ToArray(); 

通过这种修改,在array1中找不到的元素当然会导致索引为0而不是-1。

+0

希望这不会变成功课:-) – 2012-07-17 04:42:22

+0

如果它......这个答案仍然会解决问题,对不对? :) – cdhowie 2012-07-17 04:42:54

+1

除了'家庭作业'标签有具体的指导'家庭作业意味着问题是要求帮助学校作业。这让潜在的回答者知道他们应该引导学生解决问题,并且不应该简单地显示完整的答案。然后,他再次没有使用该标签(但它确实感觉像家庭作业)。 – 2012-07-17 04:46:59

0

假设这是家庭作业或类似的学习锻炼,这里的一些指导:

array2似乎是输入值,要找到一个位置。

array1似乎是您用来确定元素位置的参考数组。

  • 循环遍历每个元素的array2。我们来调用元素elem
  • 对于每个elem,发现array1
  • 的索引的索引添加到新阵列

看一看Array.IndexOf了解如何找出的elem指数参考阵列英寸

+0

建议“找到索引”而不是“测试索引”,因为后者意味着将有某种形式的比较或非零测试,当不需要测试时。 – cdhowie 2012-07-17 04:46:33

+0

好点,编辑。 – 2012-07-17 04:47:35

0

没有编写C#在一段时间,但..

使用嵌套的for循环来检查,看看是否数组1包含数组2指定的字符串,如果确实如此,将索引存储阵列1是对数组中你将用来存储所有索引。

而对于存储输出的数组,给它的数组大小。

祝你好运! :)