我想比较两个字符串数组。我不知道如何在vb.net中实现这一点。
假设我有两个数组
Dim A() As String = {"Hello", "How", "Are", "You?")
Dim B() As String = {"You", "How", "Something Else", "You")
我想比较A()和B(),看看它们是如何相似和不同的(元素的顺序无关紧要,这意味着程序不会检查元素的顺序,只会比较是否有是相同的元素)。 此外,代码将忽略相同字符串数组中的相同元素(如数组B()中的第二个“You”。然后代码将返回相同的元素和不同的元素。在这种情况下,输出消息应该是:
相同的元素是“你”和“如何”
不同的元素是“Something Else”
答案 0 :(得分:1)
使用Linq
使用Except()
查找两个数组之间的差异,并Intersect()
查找两个数组中的哪些元素。
Imports System.Linq
Module Module1
Sub Main()
Dim A() As String = {"Hello", "How", "Are", "You?"}
Dim B() As String = {"You", "How", "Something Else", "You"}
Console.WriteLine("A elements not in B: " + String.Join(", ", A.Except(B)))
Console.WriteLine("B elements not in A: " + String.Join(", ", B.Except(A)))
Console.WriteLine("Elements in both A & B: " + String.Join(", ", A.Intersect(B)))
Console.ReadLine()
End Sub
End Module
结果:
A elements not in B: Hello, Are, You?
B elements not in A: You, Something Else
Elements in both A & B: How
答案 1 :(得分:0)
设置for循环并使用.equals来比较数组中每个元素的每个字符串。如果需要,我可以编写代码。
答案 2 :(得分:0)
使用Linq扩展。 Except
会告诉您哪些项目不同
' ones in A but not in B
Dim result() As String = A.Except(B).ToArray()
' ones in B but not in A
Dim result() As String = B.Except(A).ToArray()
And you can use Join
to find same items
以下是查找相同项目或不同项目的一种方法
Dim a() as string = {"a", "b", "c"}
Dim b() as string = {"a", "b", "z"}
Dim sameItems() as String = a.Where(Function(i) b.Contains(i)).ToArray()
Array.ForEach(sameItems, Sub(i) Console.WriteLine(i))
Dim diffItems() as String = a.Where(Function(i) Not b.Contains(i)).ToArray()
Array.foreach(diffItems, Sub(i) Console.WriteLine(i))
当然,您可以使用Intersect