我想比较两个string
数组,只返回两个数组中包含的值。
示例:
string[] a = ["A", "B", "C", "D"];
string[] b = ["A", "E", "I", "M", "Q", "U", "Y"];
预期结果将是
string[] result = ["A"];
答案 0 :(得分:6)
undefined is not a function
应该在这里提供帮助
Contains()
答案 1 :(得分:5)
您可以使用LINQ的@Override
public boolean equals(Object o){...}
@Override
public int hashCode() {...}
:
Intersect
请注意,var arrayA = new string[] { "A", "B", "C", "D" };
var arrayB = new string[] { "A", "E", "M", "Q", "U", "Y" };
var matchingItems = arrayA.Intersect(arrayB);
var firstMatchingItem = arrayA.Intersect(arrayB).First();
会产生一个 distinct (唯一)集作为结果。
答案 2 :(得分:0)
您可以按照建议使用LINQ,也可以使用2个for
循环:
string[] a1 = { "A", "B", "C", "D" };
string[] a2 = { "A", "E", "I", "M", "Q", "U", "Y" };
for(int i = 0; i < a1.Length; i++)
for(int y = 0; y < a2.Length; y++)
if(a1[i]==a2[y])
{
//Code
}
答案 3 :(得分:0)
在一般情况下,当相同项可能出现几次次时,您可以尝试GroupBy
:
// Expected anewer: [A, B, A]
// since A appears two times in b only, B - just once
string[] a = new[] { "A", "B", "A", "C", "A", "D" };
string[] b = new[] { "A", "E", "I", "M", "A", "Q", "U", "B" };
var quantities = b
.GroupBy(item => item)
.ToDictionary(chunk => chunk.Key, chunk => chunk.Count());
string[] result = a
.Where(item => quantities.TryGetValue(item, out var count) &&
((quantities[item] = --count) >= 0))
.ToArray();
Console.Write(string.Join(", ", result));
结果:
A, B, A