Ich weiß, du willst keinen vollständigen Code und das ist auch lobenswert, aber Copy&Paste heißt nicht gleich, dass man nichts lernt. Es kommt darauf an wie man damit umgeht.
Versuche mal folgenden Code zu verstehen:
Public Class Form1
Private mLetterDigitDict As New Dictionary(Of Char, Integer)
Public Sub New()
InitializeComponent()
mLetterDigitDict.Add("a"c, 1)
mLetterDigitDict.Add("i"c, 1)
mLetterDigitDict.Add("j"c, 1)
mLetterDigitDict.Add("q"c, 1)
mLetterDigitDict.Add("y"c, 2)
mLetterDigitDict.Add("b"c, 2)
mLetterDigitDict.Add("k"c, 2)
mLetterDigitDict.Add("r"c, 3)
mLetterDigitDict.Add("c"c, 3)
mLetterDigitDict.Add("g"c, 3)
mLetterDigitDict.Add("l"c, 3)
mLetterDigitDict.Add("s"c, 4)
mLetterDigitDict.Add("d"c, 4)
mLetterDigitDict.Add("m"c, 4)
mLetterDigitDict.Add("t"c, 5)
mLetterDigitDict.Add("e"c, 5)
mLetterDigitDict.Add("h"c, 5)
mLetterDigitDict.Add("n"c, 6)
mLetterDigitDict.Add("u"c, 6)
mLetterDigitDict.Add("v"c, 6)
mLetterDigitDict.Add("w"c, 6)
mLetterDigitDict.Add("x"c, 7)
mLetterDigitDict.Add("o"c, 7)
mLetterDigitDict.Add("z"c, 8)
mLetterDigitDict.Add("f"c, 8)
mLetterDigitDict.Add("p"c, 9)
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
Handles Button1.Click
Dim txt As String = TextBox1.Text
Dim digitTxt As String = String.Empty
For Each chr As Char In txt
digitTxt &= mLetterDigitDict(chr).ToString
Next
MessageBox.Show(digitTxt)
End Sub
End Class Hier wird ein "Dictionary(Of TKey, TValue)" deklariert (mLetterDigitDict). Ein Dictionary ist im Prinzip eine spezielle Liste für Variablen-Paare(Key/Value). In deinem Fall Char-Integer. Das besondere ist dabei, dass im Dictionary kein Key doppelt vorkommen kann, sehr wohl aber ein Value. (Du kannst ja mal versuchen noch ein "p"c oder so hinzuzufügen). Ich denke das ist genau das, was du brauchst.
Wenn du jetzt einen Integer(Value) zu einem bestimmten Char(Key) haben willst, musst du dem Dictionary nur den Char übergeben und bekommst als Rückgabe den dazugehörigen Integer.
Dim i As Integer = mLetterDigitDict("p"c) Die Items eines Dictionary(Of TKey, TValue) sind übrigens vom Typ "KeyValuePair(Of TKey, TValue)". (Das kannst du aber erstmal ignorieren, wenn es dich zu sehr verwirrt; Ist nur für's tiefere Verständnis)
For Each kvp As KeyValuePair(Of Char, Integer) In mLetterDigitDict
Dim key As Char = kvp.Key
Dim value As Integer = kvp.Value
'...
Next Noch etwas zur Deklaration von Chars (Ich weiß jetzt nicht ob du das bereits verstanden hast; Ich hab nicht alles hier gelesen)
Dim s As String = "p"c 'geht
Dim s2 As String = "p" ' geht
Dim c As Char = "p"c ' geht
Dim c2 As Char = "p" 'geht nicht
Dim c3 As Char = "pp"c 'geht nicht Ich schreibe das, weil du im letzten Post dein Array als String deklariert hast, obwohl du ja eigentlich Chars benutzen willst.
Maas
@Dave&Manfred: Hat es einen speziellen Grund wieso ihr kein Dictionary vorgeschlagen habt? |