我有2个文本框 我需要比较这两个字符串以获得相同的数字 文字/字符。 例: 劈 蛋糕
相同的字母/字符= 3 [C.K.A]
我该怎么做?
这是我的代码:
Private Sub FlatButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatButton1.Click
first = FlatTextBox1.Text
second = FlatTextBox2.Text
first = first.ToCharArray
second = second.ToCharArray
FlatLabel1.Text = result
End Sub
答案 0 :(得分:0)
您可以使用Linq Enumerable.Intersect方法从两个字符串中查找公共字符。
Dim result As Integer = FlatTextBox1.Text.Intersect(FlatTextBox2.Text).Count()
如果您想要处理区分大小写,那么
Dim result As Integer = FlatTextBox1.Text.ToUpper().Intersect(FlatTextBox2.Text.ToUpper()).Count()
答案 1 :(得分:0)
假设您要忽略字符的大小写,可以使用以下代码:
Dim chars = (From x In first
Where second.Contains(x, StringComparer.OrdinalIgnoreCase)
Select x.ToUpper()).Distinct()
' If you need the count:
Dim count = chars.Count()
' Concatenate the characters
Dim result = String.Join(", ", chars.Cast(Of String).ToArray())
答案 2 :(得分:0)
这对你有用。代码基本上循环遍历第一个字符串的字符数,然后将每个字符串与第二个字符串进行比较。如果您刚刚开始,我建议您考虑自己解决问题的方法。在了解完成后,您可以直接使用内置函数(如果有)。
Dim first As String = FlatTextBox1.Text
Dim second As String = FlatTextBox2.Text
Dim result As String = ""
For x = 1 To Len(first)
If UCase(second).Contains(Mid(UCase(first), x, 1)) = True Then result += Mid(first, x, 1)
Next x
FlatLabel1.Text = Len(result) & " [" & result & "]"
答案 3 :(得分:0)
如果你只想计算两个文本框中包含的字符,你可以使用LINQ的Enumerable.Intersect
,这是有效的,因为它在内部使用了一个集合。但是,由于您希望比较不区分大小写,因此需要首先调整大写字符:
Dim text1 = "Hack"
Dim text2 = "Cake"
Dim t1Chars = From chr In text1 Select Char.ToUpper(chr)
Dim t2Chars = From chr In text2 Select Char.ToUpper(chr)
Dim both = t1Chars.Intersect(t2Chars)
Dim count As Int32 = both.Count() ' --> 3
Dim show As String = String.Join(",", both) ' --> "A,C,K"
请注意,此方法会重复计算一次。