Textbox Inhalt an bestimmter Stelle addieren

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Textbox Inhalt an bestimmter Stelle addieren

    Moin,
    hab da ein Problem und komme einfach nicht weiter.
    Und zwar gibt es eine Textbox in der entweder eine 13. oder 8. stellige Nummer drin steht. Es sind immer Zahlen.
    Nun möchte ich, dass bei der 13. stelligen Zahl die 2. - 7. addiert wird und die 8. - 13. Zahl.
    Wie ging das nochmal? Hat jemand einen Tipp?
    Danke.
    Mit String.Substring() kann man einen Teil eines Strings ermitteln. Mit diesem kann man dann weiter arbeiten.
    Siehe:
    docs.microsoft.com/de-de/dotne…ing?view=netframework-4.8
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Und ggf. vorher noch mit DeinText.Length die Textlänge bestimmen.
    Nach Substring noch die einzelnen Ziffern mit Integer.Parse in Ganzzahlen umwandeln und fertig ist der Lack.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Man könnte die Nummern auch Splitten, dann hast du jeweils die einzelnen Ziffern
    im einer Array

    Die rein mathematische Variante

    VB.NET-Quellcode

    1. Private Function GetDigits(number As Int64) As Int32()
    2. If number = 0 Then Return {0}
    3. Dim base = 10I
    4. Dim digitlen = CInt(Math.Truncate(Math.Log10(number)) + 1L)
    5. Dim res = New Int32(digitlen - 1) {}
    6. For i As Int32 = 0 To digitlen - 1
    7. res(i) = CInt(Math.Truncate((number / (base ^ i)) Mod base))
    8. Next
    9. Return res.Reverse.ToArray
    10. End Function


    Die Variante über die Encoding (Würde natürlich auch über eine Char-Array gehen)

    VB.NET-Quellcode

    1. Private Function GetDigits2(number As Int64) As Int32()
    2. Return Encoding.ASCII.GetBytes(number.ToString).Select(Function(x) x - 48).ToArray
    3. End Function


    Oder natürlich wie oben erwähnt über die SubString.

    Freundliche Grüsse

    exc-jdbi
    Danke für die Hilfe. Hat mit Substring wunderbar geklappt!

    Quellcode

    1. Dim HP As String = TextBox1.Text.Substring(1, 6)
    2. Dim ANG As String = TextBox1.Text.Substring(7)


    Jetzt meine Frage wie ich ermitteln kann welche Zahl am öftesten in einer Textbox vorkommt.
    Die Textbox hat immer 12 Zahlen und ich muss wissen welche davon am häufigsten vorkommt.
    Kleiner Tipp reicht mir denke ich.
    eine "Komplettlösung" von exc-jdbis Lösungsansatz

    VB.NET-Quellcode

    1. 'als Test; es müssten sich bei der Häufigkeitszählung ergeben: die 0 kommt 5x vor, 1: 8x, 2: 4x, 3: 2x
    2. TextBox1.Text = "0332021202001111111"
    3. 'Es werden "Gruppen" erstellt. Als Kriterium, wonach gruppiert wird, werden die einzelnen Characters, also die Zeichen (welche hier die Textdarstellung einer Ziffer sind), hergenommen.
    4. Dim CharGroups = TextBox1.Text.GroupBy(Function(x) x)
    5. 'die Gruppen werden absteigend nach Häufigkeit sortiert
    6. Dim OrderedCharGroups = CharGroups.OrderByDescending(Function(x) x.Count)
    7. 'die erste (also die mit dem höchsten Count) für den MessageBox-Text hergenommen
    8. Dim MostFrequentlyCharGroup = OrderedCharGroups.First
    9. MessageBox.Show($"Die Ziffer {MostFrequentlyCharGroup.Key} kam am häufigsten vor, und zwar {MostFrequentlyCharGroup.Count}x.")

    zusammenfassend kann man dann schreiben

    VB.NET-Quellcode

    1. Dim MostFrequentlyCharGroup = TextBox1.Text.GroupBy(Function(x) x).OrderByDescending(Function(x) x.Count).First
    2. MessageBox.Show($"Die Ziffer {MostFrequentlyCharGroup.Key} kam am häufigsten vor, und zwar {MostFrequentlyCharGroup.Count}x.")

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.