bekomme immer falschen Wert bei indexof

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    bekomme immer falschen Wert bei indexof

    Moin!

    ich suche eine Übereinstimmung und bekomme statt der 0 immer eine -1 für keine Übereinstimmung.

    Hier mein Code:

    VB.NET-Quellcode

    1. _MyFileFolder.ToUpper.IndexOf("\\LOCAL.EBHL.DE\EBL-DATEN\ABTEILUNG\EBL\PLNB\Projekte") = 0


    und hier der Wert

    VB.NET-Quellcode

    1. _MyFileFolder = "\\local.ebhl.de\ebl-daten\Abteilung\EBL\PLNB\Projekte\10 Travemünde\Rose, Boelckestraße 4.08.62\04 Eigentümer"


    Kann mir einer weiterhelfen. Vermutlich ist es die falsche Brille.

    Das

    \\


    sollte es nicht sein.

    Weil leider auch bei dem Code

    VB.NET-Quellcode

    1. _MyFileFolder.ToUpper.IndexOf("I:\EBL\PLNB\Projekte\") = 0


    mit dem Wert

    VB.NET-Quellcode

    1. _MyFileFolder = "I:\EBL\PLNB\Projekte\10 Travemünde\Rose, Boelckestraße 4.08.62\04 Eigentümer"


    funktioniert es irgendwie nicht.

    ????

    Gruß Jan
    doch - funktioniert genau wie es soll. Du bekommst -1, weil der eine String im anderen nicht enthalten ist.

    Aber poste doch mal ein paar mehr Zeilen, am besten eine ganze Test-Methode mit Anfang und ende.
    An so verlorenen Zeilen die sich auf weissgottwas anderes beziehen kann man keinerlei Fehler aufzeigen.
    Moin!

    erst einmal danke - aber das muss ein dicker Balken vor meinem Kopf sein.

    Bleibe ich bei dem ersten Beispiel:

    _MyFileFolder wandel ich mit .toupper durchgehend in Großbuchstaben um.

    Dann möchte ich schauen, ob dieser Wert mit "\\LOCAL.EBHL.DE\EBL-DATEN\ABTEILUNG\EBL\PLNB\Projekte" beginnt.

    Das ist aus meiner Sicht der Fall und deshalb erwarte ich 0.

    Ich sehe keinen Unterschied.

    Vielleicht kann mir einmal einer den Balken abnehmen.

    Gruß Jan
    kann man nix zu sagen - weil wir sehen nicht den Code, wie du _MyFileFolder bildest.
    Wenn da drin ist, was du suchst, dann gehts, sonst nicht.
    Nur auf deine Versicherung hin, dasses bestimmt(!!) drin sei.... Da tätich aus Erfahrung mal vorläufig widersprechen ;)

    Mach dir die Mühe, schreib einen Sample-Code, wo man sieht, was drin ist und womit es verglichen wird - und höchstwahrscheinlich verschwindet dann der Balken tatsächlich von selber (ebenfalls Erfahrung)

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

    jan99 schrieb:

    MyFileFolder wandel ich mit .toupper durchgehend in Großbuchstaben um.
    Dann möchte ich schauen, ob dieser Wert mit "\\LOCAL.EBHL.DE\EBL-DATEN\ABTEILUNG\EBL\PLNB\Projekte" beginnt.
    Tut er mit Sicherheit nicht, weil der Suchstring Kleinbuchstaben enthält.
    Wandle den Suchstring ebenfalls in Großbuchstaben um.
    Da hat aber @Bluespide auch schon darauf hingewiesen.

    Ich würde da aber StartsWith als Vergleichsmethode heranziehen und als ComparisonType OrdinalIgnoreCase verwenden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Ganz einfach:

    jan99 schrieb:

    Projekte
    enthält Kleinbuchstaben.

    VB.NET-Quellcode

    1. Dim index = "Projekte".ToUpper().IndexOf("Projekte")

    ' da kommt halt -1 raus.

    VB.NET-Quellcode

    1. Dim index = "Projekte".ToUpper().IndexOf("Projekte".ToUpper())
    Hier nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nur mal so am Rande: Reports the zero-based index of the first occurrence of the specified string in this instance.

    Heißt, wenn dein String string a = "abcdef" ist und du a.IndexOf("abc") aufrufst, bekommst du als Ergebnis 0 wieder, weil das das erste Vorkommen ist. Wenn du a.IndexOf("bcd") benutzt bekommst du 1 als Ergebnis.

    Wie du merkst, gibt dir IndexOf also den Start deines vorkommenden Strings wieder, nicht das Ende!
    Wenn du das Ende haben willst, musst du die Länge deines Suchwertes - 1 (weil zero-based) noch hinzufügen.



    Edit: Ach vergiss es, es ist noch zu früh für mich <.<