Jak wyciągnąc liczby z TextBoxa?

Jak wyciągnąc liczby z TextBoxa?
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

9488712525424427b14cc8.pnggggbgbgb.png

jak takie cos zrobić ? (vb.net)

napisałem takie coś, ale to wyciąga wszystkie cyfry..a mi potrzeba aby wyciągało tylko te które są 3-4 lub więcej pod rząd...

Kopiuj
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox2.Clear()

        For Each ch As Char In TextBox1.Text.ToCharArray
            If Char.IsDigit(ch) Then
                TextBox2.Text = TextBox2.Text + ch
            End If
        Next
    End Sub
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
0

Jeśli działa prawidłowo to dobre;

Ewentualnie możesz wrzucać cyferki do pomocniczej zmiennej łańcuchowej, a po opuszczeniu pętli przepisać wartość ze zmiennej do drugiego pola; Wtedy czyszczenie drugiego pola przed pętlą nie będzie konieczne; Czyli zaktualizujesz zawartość komponentu raz, zamiast za każdym razem, gdy napotkasz cyferkę.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

wlasciwie to nie moze być ta moja wersja...z racji tego że TextBox1 może mieć taką postać:

Kopiuj
3798085-doom-3-bfg-edition

w wyniku czego otrzymam rezultat:

Kopiuj
37980853

zamiast:

Kopiuj
3798085

i mi potrzeba tylko ten ciąg znaków, bez tej trójeczki dalszej... ;/

czyli potrzebny mi jeszcze jakiś warunek... "jeśli 4 lub więcej liczb pod rząd to dodaj je do textbox2"

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
0

Czyli znajdź najpierw pierwszą cyfrę i jeżeli ją znajdziesz - w pętli przepisuj znaki dotąd, aż osiągniesz koniec łańcucha źródłowego lub kolejnym znakiem nie będzie cyferka; Dzięki temu pobierzesz tylko pierwszą liczbę z łańcucha, jeżeli jest ich kilka; A jak nie będzie żadnej, to ustawiasz w komponencie wartość sugerowanej zmiennej, czyli pusty łańcuch.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Najprościej? Regexp .*?(\d+).* i voila.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0
Kopiuj
    Dim tylko_liczby As String

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        tylko_liczby = ""

        For Each ch As Char In TextBox1.Text.ToCharArray
            If Char.IsDigit(ch) Then
                tylko_liczby = tylko_liczby + ch

            End If


            If Not Char.IsDigit(ch) And Not tylko liczby = "" Then
                Exit For
            End If
        Next
        TextBox1.Text = tylko_liczby

    End Sub

takie cos wycudowalem, ma to sens ? xD

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
1

Bardziej po ludzku to samo:

Kopiuj
        Dim OnlyDigits As String = ""
        For Each ch As Char In TextBox1.Text.ToCharArray
            If Char.IsDigit(ch) Then
                OnlyDigits &= ch
            ElseIf OnlyDigits.Length > 0 Then
                Exit For
            End If
        Next
        TextBox1.Text = OnlyDigits

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.