Есть множество способов выполнить то, что вы пытаетесь сделать.
Вот один из них. Возможно, он не самый лучший, но он дает вам представление о том, как этого добиться.
Во-первых, я определил словарь (Phonetic
), который отображает первую заглавную букву в фонетический эквивалент:
Dim Phonetic As Dictionary(Of String, String)
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
' List of phonetic words
Dim Words() As String = {"Alfa", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X - ray", "Yankee", "Zulu"}
' Create dictionary to hold words and load with words
Phonetic = New Dictionary(Of String, String)
For Each Word As String In Words
Phonetic.Add(Word.Substring(0, 1), Word)
Next
End Sub
Этот словарь является переменной-членом, поэтому к нему можно получить доступ в любом месте формы. Обязательно определите его (Dim ...
) на уровне формы, а не внутри метода или обработчика событий.
Далее, когда нажимается кнопка, каждая буква текстового поля оценивается, и соответствующее фонетическое слово возвращается из словаря. Пробел также добавлен. Результат обрезается (для удаления последнего пробела) и отображается в метке:
Private Sub Button9_Click(sender As System.Object, e As System.EventArgs) Handles Button9.Click
LoadOutput()
End Sub
Private Sub LoadOutput()
If Not Phonetic Is Nothing Then
Dim Output As String = String.Empty
For Each Letter As String In TextBox1.Text.ToUpper()
Output += Phonetic(Letter) + " "
Next
Output = Output.Trim()
Label10.Text = Output
End If
End Sub
При нажатии на кнопку будет выведено то, что вы ищете. Есть много других способов выполнить эту задачу - это всего лишь пример того, как вы могли бы это сделать.
Чтобы автоматически перевести текст при вводе в TextBox
, просто используйте событие TextChanged
:
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
LoadOutput()
End Sub
EDIT
После комментария от OP также обрабатывать недопустимые символы (включая пробелы).
Это достигается в LoadOutput
путем проверки наличия буквы в Dictionary
. Если письмо не существует, мы добавляем его без преобразования. Если это так, мы просто конвертируем его, как и прежде, и добавляем:
Private Sub LoadOutput()
...
For Each Letter As String In TextBox1.Text.ToUpper()
If Phonetic.ContainsKey(Letter) Then
Output += Phonetic(Letter) + " "
Else
Output += Letter
End If
Next
...
End Sub
Что касается запроса на преобразование 1
в One
и т. Д., Это требует дополнительных усилий. Вам придется вручную добавить их в словарь во время Form1_Load
:
Private Sub Form1_Load(...)
...
Phonetic.Add(Word.Substring(0, 1), Word)
Next
Phonetic.Add("1", "One")
Phonetic.Add("2", "Two")
... (And so on)
End Sub