如何检查某个字符的文本框并在同一位置替换为不同的字符串

How to check a text box for a certain character and replace with a different string in the same spot

我正在做一个摩尔斯电码翻译项目,但我不知道如何检测某个键何时出现在文本框中,并在正确的位置用相应的摩尔斯电码点和破折号替换它。

例如,如果您输入 "a b c",那么我希望程序检查并输入

".- -... -.-."

但它也需要是动态的,所以如果您改变字母的顺序,它可以更新翻译。

现在我有一个密钥检查系统,你只能输入一个前行,如果你搞砸了,你必须清除整个框。谢谢!

这是我在上面的评论中所建议的基本示例,即使用两个单独的 TextBoxes 并每次都翻译整个文本:

Private morseCodeDictionary As New Dictionary(Of Char, String) From {{"a"c, ".-"},
                                                                     {"b"c, "-..."},
                                                                     {"c"c, "-.-."}}

Private Sub inputTextBox_TextChanged(sender As Object, e As EventArgs) Handles inputTextBox.TextChanged
    outputTextBox.Text = String.Join(" ",
                                     inputTextBox.Text.
                                                  ToLower().
                                                  Select(Function(ch) morseCodeDictionary(ch)))
End Sub

这里有一个不使用 LINQ 的实现,因此可能更容易理解:

Private Sub inputTextBox_TextChanged(sender As Object, e As EventArgs) Handles inputTextBox.TextChanged
    Dim characterStrings As New List(Of String)

    For Each ch As Char In inputTextBox.Text
        characterStrings.Add(morseCodeDictionary(ch))
    Next

    outputTextBox.Text = String.Join(" ", characterStrings)
End Sub