VBNet比较字符串

时间:2014-01-19 12:36:00

标签: vb.net

我有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

4 个答案:

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

请注意,此方法会重复计算一次。