У меня есть проект vb.net на Soundex. Для тех, кто не знает, Soundex берет введенное вами слово и экспортирует его в буквы и цифры.
Например:
Слово: морковь
Выход: C663
Мне поручено удалить вторую цифру, если они находятся рядом друг с другом и являются одним и тем же числом. Так что для этого примера C663 просто нужно вывести как C63. Я не могу понять это. Я пытался использовать предложение Distinct, но я просто не могу понять это.
Вот мой код, буду признателен за любую помощь.
Public Class Form1
Dim Word As String
Private Sub btnEncode_Click(sender As Object, e As EventArgs) Handles btnEncode.Click
Word = txtInput.Text
txtOutput.Text = Output(Word)
End Sub
Public Function Output(Word As String) As String
Return Output(Word, 4)
End Function
Public Function Output(Word As String, Length As Integer) As String
Dim returnValue As String = ""
Dim Size As Integer = Word.Length
If (Size > 1) Then
Word = Word.ToUpper()
Dim Chars() As Char = Word.ToCharArray()
Dim i As Integer
Dim wordSize As Integer = Size - 1
Dim value As Integer
Dim newString As New System.Text.StringBuilder
newString.Append(Chars(0))
For i = 1 To wordSize
Select Case Chars(i)
Case "A", "E", "I", "O", "U", "H", "W", "Y"
value = 0
Case "B", "F", "P", "V"
value = 1
Case "C", "G", "J", "K", "Q", "S", "X", "Z"
value = 2
Case "D", "T"
value = 3
Case "L"
value = 4
Case "M", "N"
value = 5
Case "R"
value = 6
End Select
If value <> 0 Then
newString.Append(value)
End If
Next
End If
Return returnValue
End Function
End Class