仅打印数组的不同或重复元素并忽略其余元素 - vb
print only distinct or duplicate elements of array and ignore the rest of elements - vb
vb 上是否有函数只打印数组的不同元素,而不打印 List 或 ArrayList?我的代码是这样
Dim TestVal(4) as String
TestVal(0) = "a"
TestVal(1) = "a"
TestVal(2) = "b"
TestVal(3) = "c"
TestVal(4) = "c"
Label7.Text = String.Join(",", TestVal.Distinct())
我想要的输出是 a,c
并且 只是忽略其他元素 。有没有像Distinct()
或者Where
子句这样的函数?
要仅查找重复项,您可以使用 LINQ 分组,如下所示:
Dim q = From p In TestVal
Group By p Into Group, Count()
Where Count > 1
Select p
Order By p
Console.WriteLine(String.Join(",", q)) ' will print "a,c"
请注意,Where Count > 1
是 select 的唯一值(重复)。
另一方面,如果您只想查找唯一值,请将 Where Count > 1
更改为 Where Count = 1
,如下所示:
Dim q = From p In TestVal
Group By p Into Group, Count()
Where Count = 1
Select p
Order By p
Console.WriteLine(String.Join(",", q)) ' will print "b"
无论哪种方式,Order By p
都是可选的。如果您不需要对结果字符串连接进行排序,则可以将其省略。
好的,试试这个代码:
Private Function GetDuplicatitions(array As String()) As String
Dim result = ""
For Each item In array
If IsInList(result, item) Then Continue For
If HasDuplications(array, item) Then result &= item & ","
Next
Return result
End Function
Private Function HasDuplications(array As String(), text As String) As Boolean
Dim count = 0
For Each item In array
If item = text Then count = count + 1
If count > 1 Then Return True
Next
Return False
End Function
Private Function IsInList(list As String, item As String) As Boolean
For Each duplicated In list.Split(",")
If item = duplicated Then Return True
Next
Return False
End Function
也许你想把它放在一个助手中 class。要使用它,您只需这样称呼它:
Dim list = {"a", "a", "b", "c", "c"}
Label7.Text = GetDuplicatitions(list)
vb 上是否有函数只打印数组的不同元素,而不打印 List 或 ArrayList?我的代码是这样
Dim TestVal(4) as String
TestVal(0) = "a"
TestVal(1) = "a"
TestVal(2) = "b"
TestVal(3) = "c"
TestVal(4) = "c"
Label7.Text = String.Join(",", TestVal.Distinct())
我想要的输出是 a,c
并且 只是忽略其他元素 。有没有像Distinct()
或者Where
子句这样的函数?
要仅查找重复项,您可以使用 LINQ 分组,如下所示:
Dim q = From p In TestVal
Group By p Into Group, Count()
Where Count > 1
Select p
Order By p
Console.WriteLine(String.Join(",", q)) ' will print "a,c"
请注意,Where Count > 1
是 select 的唯一值(重复)。
另一方面,如果您只想查找唯一值,请将 Where Count > 1
更改为 Where Count = 1
,如下所示:
Dim q = From p In TestVal
Group By p Into Group, Count()
Where Count = 1
Select p
Order By p
Console.WriteLine(String.Join(",", q)) ' will print "b"
无论哪种方式,Order By p
都是可选的。如果您不需要对结果字符串连接进行排序,则可以将其省略。
好的,试试这个代码:
Private Function GetDuplicatitions(array As String()) As String
Dim result = ""
For Each item In array
If IsInList(result, item) Then Continue For
If HasDuplications(array, item) Then result &= item & ","
Next
Return result
End Function
Private Function HasDuplications(array As String(), text As String) As Boolean
Dim count = 0
For Each item In array
If item = text Then count = count + 1
If count > 1 Then Return True
Next
Return False
End Function
Private Function IsInList(list As String, item As String) As Boolean
For Each duplicated In list.Split(",")
If item = duplicated Then Return True
Next
Return False
End Function
也许你想把它放在一个助手中 class。要使用它,您只需这样称呼它:
Dim list = {"a", "a", "b", "c", "c"}
Label7.Text = GetDuplicatitions(list)