none
Suche Zahl im String an unbekannter Position RRS feed

  • Frage

  • Hallo Experten,

    ich habe einen String in dem eine 6 stellig Zahl steht, diese möchte ich nun herauslesen/extrahieren.

    Beispiel

    Dim Quelle$ as string ="Test 12 Test test Test 567 Test Test Test 123456 Test test 125 Test 12"

    Wie kann ich nun die Zahl 123456 finden? Mir ist nicht bekannt wo im String die Zahl steht noch wie groß sie ist. Mir ist nur bekannt das sie zwischen 100000 und 999999 liegt also 6 Stellen hat.

    Danke im voraus mfg eem monarch

    Montag, 5. August 2013 11:01

Antworten

  • Hi,
    mit einem regulären Ausdruck lässt sich die Frage einfach lösen:

    Imports System.Text.RegularExpressions
    Module Module1
      Sub Main()
        Dim Quelle As String = "Test 12 Test test Test 567 Test Test Test 123456 Test test 125 Test 12"
        Dim res = (New Regex("\d{6}")).Match(Quelle)
        Console.WriteLine(res.Value)
        Console.ReadKey()
      End Sub
    End Module

    --
    Peter
    Montag, 5. August 2013 11:17

Alle Antworten

  • Hi,
    mit einem regulären Ausdruck lässt sich die Frage einfach lösen:

    Imports System.Text.RegularExpressions
    Module Module1
      Sub Main()
        Dim Quelle As String = "Test 12 Test test Test 567 Test Test Test 123456 Test test 125 Test 12"
        Dim res = (New Regex("\d{6}")).Match(Quelle)
        Console.WriteLine(res.Value)
        Console.ReadKey()
      End Sub
    End Module

    --
    Peter
    Montag, 5. August 2013 11:17
  • Hallo Monarch,

    da ist RegularExpression Dein Freund.

            Dim regex As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("(\d{6})")
            Dim Quelle As String = "Test 12 Test test Test 567 Test Test Test 123456 Test test 125 Test 12"
            Dim match As System.Text.RegularExpressions.Match = reg.Match(Quelle)
            If match.Success Then
                Dim value As String = match.Groups(1).Value
                Dim position As Integer = match.Groups(1).Index
            End If


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    My Forum Threads

    Montag, 5. August 2013 11:21
  • Hi,

    Du suchst also nicht den String an sich, sondern das Muster für sechs aufeinanderfolgende Zahlen?

    Das lässt sich am einfachsten mit Regex lösen.

    Dim Source As String = "Test 12 Test test Test 567 Test Test Test 123456 Test test 99999 125 444444 Test 12"
    
        For Each Item As Match In Regex.Matches( Source, "\b\d{6,6}\b" )
            TextBox1.AppendText( Item.Value & ControlChars.NewLine )
        Next

    Der obige Ausdruck sorgt dafür, dass Du auch mehr als eine 6-stellige Zahl im String erkennen kannst. Voraussetzung dafür ist, dass die Zahl von Wortbegrenzern, bspw. Leerzeichen, Komma, Punkt, ... umgeben ist.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Montag, 5. August 2013 11:26
    Moderator