Ausgabe, welche Zeichen wie häufig in der Textbox vorkommen.

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von Holywarrior1.

    Ausgabe, welche Zeichen wie häufig in der Textbox vorkommen.

    Ja, ich bins mal wieder.

    Habe mein Programm fast fertig. Möchte jetzt noch einen Zähler einbauen, der alle Buchstaben in der Textbox zählt.
    Z.B ("Ich bin ein sehr alter Mann")

    a=2
    b=1
    c=0
    d=0
    e=3
    .
    .
    .
    z=0

    usw...

    Könnt ihr mir ein paar Tipps geben? Hab mir gedacht mit Char zu arbeiten.

    Lg holywarrior1 :)

    Holywarrior1 schrieb:

    alle Buchstaben
    So was:

    VB.NET-Quellcode

    1. Dim dc As New Dictionary(Of Char, Integer)
    2. Dim txt = "abcdefghijklmnopqrstuvwxyz "
    3. For Each c In txt
    4. dc.Add(c, 0) ' Dictionary aufbauen (ggf. noch Sonderzeichen
    5. Next
    6. Dim wort = "Ich bin ein sehr alter Mann".ToLower
    7. For Each c In wort
    8. dc(c) += 1 ' Buchstaben zählen
    9. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Holywarrior1 schrieb:

    der gibt die irgendwie nicht aus
    Es war von Zählen die Rede, nicht von Ausgeben. Da musst Du Dich noch drum kümmern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Holywarrior1 schrieb:

    lbl_ausgabe.Text = dc.ToString
    Machst Du

    VB.NET-Quellcode

    1. MessageBox.Show(dc("a"c).ToString)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Snaptu

    Holywarrior1 schrieb:

    in einem Label ausgeben
    Kein Kommentar.
    Ein wenig solltest Du schon noch selbst machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Funzt net ganz :/.

    VB.NET-Quellcode

    1. 'Deklaration von Variablen.
    2. Dim AnzahlBuchstaben As Integer = 0
    3. Dim AnzahlZahlen As Integer = 0
    4. Dim RestlicheZeichen As Integer = 0
    5. Dim LeerZeichen As Integer = 0
    6. Dim Anzahl As Integer = 0
    7. Dim dc As New Dictionary(Of Char, Integer)
    8. Dim txt = "abcdefghijklmnopqrstuvwxyz"
    9. Dim wort = Rtxt_editor.Text
    10. 'Wenn 80 Zeichen eingegeben wurden,
    11. If Rtxt_editor.Text.Length >= 80 Then
    12. 'wird der Text Zeichen für Zeichen überprüft.
    13. For i = 0 To Rtxt_editor.Text.Length - 1 '- 1, da der Text bei 0 beginnt und er nicht vom Anfang überprüfen würde.
    14. 'Wenn ein Leerzeichen eingegeben wurde,
    15. If Rtxt_editor.Text(i) = " " Then
    16. 'wird der Variable LeerZeichen + 1 gutgeschrieben,
    17. LeerZeichen = LeerZeichen + 1
    18. 'oder wenn im Text Ziffern enthalten sind,
    19. Else
    20. If IsNumeric(Rtxt_editor.Text(i)) Then
    21. 'wird der Variable AnzahlZahlen + 1 gutgeschrieben
    22. AnzahlZahlen = AnzahlZahlen + 1
    23. 'oder wenn im Text Buchstaben enthalten sind,
    24. Else
    25. If Char.IsLetter(Rtxt_editor.Text(i)) Then
    26. 'wird der Variable AnzahlBuchstaben +1 gutgeschrieben,
    27. AnzahlBuchstaben = AnzahlBuchstaben + 1
    28. Else
    29. If Rtxt_editor.TextLength >= 80 Then
    30. For Each c In txt
    31. dc.Add(c, 0) ' Dictionary aufbauen (ggf. noch Sonderzeichen
    32. Next
    33. For Each c In wort
    34. dc(c) += 1 ' Buchstaben zählen
    35. If dc(c) >= 80 Then
    36. lbl_sonderzeichen_ausgabe.Text = dc(c).ToString
    37. End If
    38. Next
    39. End If
    40. End If
    41. End If
    42. End If
    43. Next i
    44. 'Ausgabe Buchstaben, Wörter und Ziffern.
    45. lbl_buchstaben_ausgabe.Text = AnzahlBuchstaben.ToString
    46. lbl_wörter_ausgabe.Text = LeerZeichen.ToString
    47. lbl_ziffern_ausgabe.Text = AnzahlZahlen.ToString
    48. End If
    49. 'Wenn weniger als 79 Zeichen eingegeben wurden,
    50. If Rtxt_editor.TextLength <= 79 Then
    51. 'Löscht er den Inhalt der Labels
    52. lbl_buchstaben_ausgabe.Text = ""
    53. lbl_wörter_ausgabe.Text = ""
    54. lbl_ziffern_ausgabe.Text = ""
    55. lbl_sonderzeichen_ausgabe.Text = ""
    56. End If
    57. End Sub

    RodFromGermany schrieb:

    Was

    Holywarrior1 schrieb:

    Funzt net ganz
    :?:


    Funktioniert nicht ganz :D.

    VB.NET-Quellcode

    1. Private Sub Rtxt_editor_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rtxt_editor.TextChanged
    2. 'Deklaration von Variablen.
    3. Dim AnzahlBuchstaben As Integer = 0
    4. Dim AnzahlZahlen As Integer = 0
    5. Dim RestlicheZeichen As Integer = 0
    6. Dim LeerZeichen As Integer = 0
    7. Dim Anzahl As Integer = 0
    8. Dim dc As New Dictionary(Of Char, Integer)
    9. Dim txt = "abcdefghijklmnopqrstuvwxyz"
    10. Dim wort = Rtxt_editor.Text
    11. 'Wenn 80 Zeichen eingegeben wurden,
    12. If Rtxt_editor.Text.Length >= 80 Then
    13. 'wird der Text Zeichen für Zeichen überprüft.
    14. For i = 0 To Rtxt_editor.Text.Length - 1 '- 1, da der Text bei 0 beginnt und er nicht vom Anfang überprüfen würde.
    15. 'Wenn ein Leerzeichen eingegeben wurde,
    16. If Rtxt_editor.Text(i) = " " Then
    17. 'wird der Variable LeerZeichen + 1 gutgeschrieben,
    18. LeerZeichen = LeerZeichen + 1
    19. 'oder wenn im Text Ziffern enthalten sind,
    20. Else
    21. If IsNumeric(Rtxt_editor.Text(i)) Then
    22. 'wird der Variable AnzahlZahlen + 1 gutgeschrieben
    23. AnzahlZahlen = AnzahlZahlen + 1
    24. 'oder wenn im Text Buchstaben enthalten sind,
    25. Else
    26. If Char.IsLetter(Rtxt_editor.Text(i)) Then
    27. 'wird der Variable AnzahlBuchstaben +1 gutgeschrieben,
    28. AnzahlBuchstaben = AnzahlBuchstaben + 1
    29. Else
    30. If Rtxt_editor.TextLength >= 80 Then
    31. For Each c In txt
    32. dc.Add(c, 0) ' Dictionary aufbauen (ggf. noch Sonderzeichen
    33. Next
    34. For Each c In wort
    35. dc(c) += 1 ' Buchstaben zählen
    36. If dc(c) >= 80 Then
    37. lbl_sonderzeichen_ausgabe.Text = dc(c).ToString
    38. End If
    39. Next
    40. End If
    41. End If
    42. End If
    43. End If
    44. Next i
    45. 'Ausgabe Buchstaben, Wörter und Ziffern.
    46. lbl_buchstaben_ausgabe.Text = AnzahlBuchstaben.ToString
    47. lbl_wörter_ausgabe.Text = LeerZeichen.ToString
    48. lbl_ziffern_ausgabe.Text = AnzahlZahlen.ToString
    49. End If
    50. 'Wenn weniger als 79 Zeichen eingegeben wurden,
    51. If Rtxt_editor.TextLength <= 79 Then
    52. 'Löscht er den Inhalt der Labels
    53. lbl_buchstaben_ausgabe.Text = ""
    54. lbl_wörter_ausgabe.Text = ""
    55. lbl_ziffern_ausgabe.Text = ""
    56. lbl_sonderzeichen_ausgabe.Text = ""
    57. End If
    58. End Sub

    Holywarrior1 schrieb:

    Funktioniert nicht ganz :D.
    Was funktioniert nicht?
    Hast Du möglicherweise beim Abschreiben nicht richtig abgeschrieben?

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. Dim txt = "abcdefghijklmnopqrstuvwxyz "
    Da hängt bei mir, nicht aber bei Dir, ein Leerzeichen hinten dran. 8o
    Weitere Zeichen musst Du selbst noch anfügen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oh ok, versuch ich mal :D. Danke

    EDIT: Funktioniert immer noch nicht. Der gibt das einfach nicht aus. Und wenn er dann ausgibt, dann steht da "System.Collection..."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Holywarrior1“ ()

    Holywarrior1 schrieb:

    Funktioniert immer noch nicht.
    Hast Du mal meinen Beispielcode aus den Posts #2 und #6 exakt so, wie er da steht, mal ausprobiert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also. Der folgende Code generiert dir eine "schöne" Ausgabe:

    VB.NET-Quellcode

    1. Dim text As String = "aaabcdefg.&-§"
    2. Dim str = text.GroupBy(Function(x) x).[Select](Function(x) [String].Format("'{0}': {1}", x.Key, x.Count())).Aggregate(Function(current, [next]) current & Environment.NewLine & [next])


    text ist dabei der Text der analysiert werden soll und str ist das was raus kommt. Bei dem Beispiel oben kommt folgendes raus:

    Quellcode

    1. 'a': 7
    2. 'b': 2
    3. 'c': 3
    4. 'g': 1
    5. 'd': 5
    6. 's': 3
    7. 'e': 1
    8. 'f': 3
    9. '.': 1
    10. '&': 1
    11. '-': 1
    12. '§': 1


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thefiloe“ ()