Gå til innhold

[Løst][vb 2008] for each c as char in s, bytte ut bokstaver med ord.


Gjest

Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av Gjest
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...