Zahl aus String auslesen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Zahl aus String auslesen

    Hey

    Hab nen kleines Problem und weiß net wie ich anfangen soll, bzw welche Befehle ich dafür brauch.

    Ich habe ein Textdatei (Test.txt) und will aus jeder Zeile 2 Zahlen auslesen
    Die Textdatei ist so aufgebaut:

    (-10385 | 27465) Bla bla bla (BlaBla) Mo 01.01.11


    Ich möchte nun aus jeder Zeile die ersten 2 Zahlen auslesen -> Im Beispeil also -10385 und 27465

    Hab bis jetzt noch nix geschaft :D
    Hab nur:




    Quellcode

    1. Public Class Form1
    2. Dim Zeile As String
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim Reader As New StreamReader("test.txt", System.Text.Encoding.Default)
    5. Zeile = Reader.ReadLine
    6. End Sub
    7. End Class


    Hoffe mir kann da jemand helden ;)

    Mfg Stefan
    1. Zeichen ( '(' ) löschen/auslassen (substring)
    2. Bei ( ')' ) Splitten
    3. Bei ( '|' ) Splitten
    4. ggf. leerzeichen entfernen (trim)
    "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
    Paul Thurrott

    VB.NET-Quellcode

    1. Dim text As String = "(-10385 | 27465) Bla bla bla (BlaBla) Mo 01.01.11"
    2. Dim teil() As String = text.Substring(1, InStr(text, ")") - 2).Split("|")
    3. Dim zahl1 As String = teil(0).Trim
    4. Dim zahl2 As String = teil(1).Trim
    5. MsgBox(zahl1 + vbNewLine + zahl2)
    Ich kann die Textbearbeitung mit RegEx nur empfehlen. Sieht erst verwirrend aus aber es existiert ein gutes Tutorial -> hier

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Public Class form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim text1 As String = "(-10385 | 27465) Bla bla bla (BlaBla) Mo 01.01.11 )"
    5. Dim Zahl1 as String
    6. Dim Zahl2 as String
    7. Zahl1 = Regex.Match(text1, "([0-9|-]*\s)", RegexOptions.IgnoreCase).ToString
    8. Zahl2 = Regex.Replace(Regex.Match(text1, "(\|\s[0-9]*)", RegexOptions.IgnoreCase).ToString, "(\|)", "", RegexOptions.IgnoreCase).ToString
    9. End Sub
    10. End Class
    ah geht jetzt
    hab nen fehler gemacht :D


    Danke an alle :) :thumbsup:


    Vieleicht kann mir noch jemand erkären wie das mit dem spliten funktioniert.
    Diesen Teil versteh ich überhaupt nicht ?(

    Quellcode

    1. text.Substring(1, InStr(text, ")") - 2).Split("|")



    mfg

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

    Stefan0001 schrieb:

    VB.NET-Quellcode

    1. text.Substring(1, InStr(text, ")") - 2).Split("|")
    Dassis ziemlich schlimmer Code, weil da wird die olle Instr-Methode von VB6 verwendet, die in .Net ühaupt nix mehr verloren hat.
    probierma

    VB.NET-Quellcode

    1. text.Substring(1, text.IndexOf(")") - 1).Split("|")
    IndexOf gibt den Index der schließenden Klammer an. Davon muß man 1 abziehen, dann hat man die Länge zwischen den Klammern.
    Das Substring überspringt das erste Zeichen, also die erste Klammer.
    Und Split teilt halt am "|" den String auf, sodaß man ein Array mit 2 Strings erhält.