Gjest Skrevet 14. november 2009 Del Skrevet 14. november 2009 Hei! Jeg har følgende kode: Private dic As New Dictionary(Of Char, String) Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim s As String = TextBox1.Text.ToLower() Dim natoWord As String = dic(s) Dim sb As New StringBuilder() For Each c As Char In natoWord sb.Append(c) Next TextBox2.Text = sb.ToString End Sub Den fungerer dårlig. Det den skal gjøre å oversette hver bokstav til noe som er dictonary som jeg har lagt inn. Er det noe som ser hva jeg har gjort feil her? Får bare opp første bokstav, får ikke opp resten av bokstavene jeg skrive inn. Lenke til kommentar
GeirGrusom Skrevet 15. november 2009 Del Skrevet 15. november 2009 Jeg tror du roter med Char og String her. Lenke til kommentar
brgr Skrevet 15. november 2009 Del Skrevet 15. november 2009 Dette medfører riktighet Private dic As New Dictionary(Of Char, String) Private Sub TextBox1_TextChanged(ByVal sender As TextBox, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim s As String = TextBox1.Text.ToLower() Dim sb As New System.Text.StringBuilder If TextBox1.Text.Length > 0 Then For Each c As Char In s If dic.ContainsKey© Then sb.Append(dic© & " ") End If Next Else sb.Clear() sb.Append("") End If TextBox2.Text = sb.ToString End Sub Det du gjør feil er att du angir natoWord til å være ett ord fra dictionary. Som alltid vil være den første i textstringen du gav i DIC(of char) Ved å faktisk bruke det dynamiske i textbox1 samt fjerne sjekke om den gitte keyen faktisk eksisterer i dictionary. Lenke til kommentar
Gjest Skrevet 15. november 2009 Del Skrevet 15. november 2009 (endret) Jeg ser det! Jeg glemte å si den skulle legge til ordet fra dictonary for å så forsette. Det jeg gjorde var å bare ta første ordet fordi bare tok for hver bokstav eller noe i den duren. EDIT: Konvertere andre veien: Private dic2 As New Dictionary(Of String, Char) dic2.Add("Yankee", "y"c) Dim s As String = TextBox1.Text Dim sb As New StringBuilder() If TextBox1.Text.Length > 0 Then For Each c As String In s If dic2.ContainsKey(c) Then sb.Append(dic2(c)) End If Next Else sb.Append(" ") End If TextBox2.Text = sb.ToString Funket slik. Men har et problem. Alle ordene blir sammen hengende, f.eks slik: "Idagskaljegspisegrøt" Endret 15. november 2009 av Gjest Lenke til kommentar
brgr Skrevet 15. november 2009 Del Skrevet 15. november 2009 Jeg ser det!Jeg glemte å si den skulle legge til ordet fra dictonary for å så forsette. Det jeg gjorde var å bare ta første ordet fordi bare tok for hver bokstav eller noe i den duren. Funksjonen min gjør følgende: For hver bokstav i Textbox1.Text.ToLower som er stringen i textbox1 som du vil bruke. Sjekk om bokstaven er lagt inn i dictionary. Hvis den er det så legg til stringen som ligger i dictionary til gjeldende bokstav og legg dette til slutt resultatet. Er dette galt så utdyp deg bedre. Lenke til kommentar
brgr Skrevet 15. november 2009 Del Skrevet 15. november 2009 Det stemmer det =) Men det blir mer avansert, men hvis det er ett gitt format så er det ca. samme prosedyre=) Bruk split(skille) Lenke til kommentar
Gjest Skrevet 15. november 2009 Del Skrevet 15. november 2009 Bah, var ikke så lett å bruke split funksjonen da xD Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå