如何比较两个字符串数组?

时间:2015-07-13 17:55:05

标签: arrays vb.net string

我想比较两个字符串数组。我不知道如何在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”

3 个答案:

答案 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