none
2. Vorkommen eines Zeichen in String abfragen und Rest abschneiden RRS feed

  • Frage

  • Hoi,

    habe mal wieder eine Frage.

    Ich bekomme einen String einer Anwendung zurück geliefert der am Anfang und ca. in der Mitte einen DOPPELPUNKT beinhaltet.
    Ich möchte aber nur den Inhalt des Strings AB dem 2. Doppelpunkt in meiner Textbox lesen (der Rest sind Serverinformationen die unnötig sind und das lesen nur erschweren).

    Folgender Code funktioniert soweit:

            Dim lData() As String
            Dim C() As String
            Dim tData As Integer
            Dim CL As Integer
            Dim CLi As String
            Dim a As Integer
    
            lData = Split(inData, Chr(10))
            tData = UBound(lData) - LBound(lData)
    
            For a = 0 To tData
                If Mid(lData(a), 1, 1) = ":" Then
                    lData(a) = Mid(lData(a), 2)
                End If
            Next
    

    Was müsste ich machen um oben erwähntes Ergebnis zu erzielen ?

    Doei
    Franz

    Montag, 28. September 2009 09:55

Antworten

  • Hi Franz,
    es gibt verschiedene Möglichkeiten, das zweite Auftreten eines Zeichens in einer Zeichenkette zu erkennen, z.B. mit der InStr-Funktion, mit der Split-Funktion/Methode oder mit regulären Ausdrücken. Was die optimale Lösung ist, hängt von weiteren bedingungen ab, z.B. ob nach dem zweiten Doppelpunkt weitere Doppelpunkte möglich sind. Hier mal eine Demo mit Split:

        Dim s0 = "ab c:cd efg:hi jklmn"
        Dim s1 = s0.Split(":"c)
        Console.WriteLine(s1(2))
    --
    Peter
    Montag, 28. September 2009 10:16

Alle Antworten

  • Hi Franz,
    es gibt verschiedene Möglichkeiten, das zweite Auftreten eines Zeichens in einer Zeichenkette zu erkennen, z.B. mit der InStr-Funktion, mit der Split-Funktion/Methode oder mit regulären Ausdrücken. Was die optimale Lösung ist, hängt von weiteren bedingungen ab, z.B. ob nach dem zweiten Doppelpunkt weitere Doppelpunkte möglich sind. Hier mal eine Demo mit Split:

        Dim s0 = "ab c:cd efg:hi jklmn"
        Dim s1 = s0.Split(":"c)
        Console.WriteLine(s1(2))
    --
    Peter
    Montag, 28. September 2009 10:16
  • Hoi Peter,

    habe das u.a. mal so verscht, gibt aber immer einen Fehler zurück dass ":" nicht in Integer konvertiert werden kann.

            For a = 0 To tData
                If Mid(lData(a), 1, 1) = ":" Then
                    '  lData(a) = Mid(lData(a), 2)
                    Dim s0 = Mid(lData(a), 2)
                    Dim s1 = s0.Split(":")
                    lData(a) = s1(":")
    
                End If
            Next
    2. Version war so:
            For a = 0 To tData
                If Mid(lData(a), 1, 1) = ":" Then
                    '  lData(a) = Mid(lData(a), 2)
                    Dim s0 = Mid(lData(a), 2)
                    Dim s1 = s0.Split(":")
                    lData(a) = (s1(2))
    
    
                End If
            Next
    Dann erscheint als Fehler dass der Index ausserhalb des Arraybereichs liegt

    P.S.: nach dem 2. Doppelpunkt kommt nur noch anzuzeigender Text (in der Länge variabel)

    Doei
    Franz
    Montag, 28. September 2009 10:33
  • Wenn der Index außerhalb des Array-Bereiches liegt, gab es in der mit Split zerlegten Zeichenkette keine 2 Zeichen "Doppelpunkte". Das solltest du mal prüfen.

    --
    Peter
    Montag, 28. September 2009 11:54
  • Hoi Peter,

    seltsamerweise funktioniert es so:

          lData(a) = (s1(1))
    Doei
    Franz
    Montag, 28. September 2009 13:50
  • Also ist deine Vorgabe "2 mal Doppelpunkt" falsch und es ist nur ein Doppelpunktzeichen vorhanden.
    --
    Peter
    Montag, 28. September 2009 19:11
  • Hoi Peter,

    seltsamerweise nein - jede Zeile beginnt mit einem :, dann -nach ca. 25-30 Zeichen- folgt ein Zweiter


    Doei
    Franz
    Montag, 28. September 2009 19:41
  • Das kann ich dir nicht glauben. Lass dir mal s0 anzeigen.

    -- 
    Peter
    Montag, 28. September 2009 20:05
  • Hoi Peter,

    LOL - Du hast Recht - aber ich auch ;-)

    Das erste Zeichen (also der 1. Doppelpunkt) wurde schon in der Abfrage zuvor entfernt


    Doei
    Franz
    Montag, 28. September 2009 20:50