kostenloser Webspace werbefrei: lima-city


Eigenartiges Problem mit LastIndexOf

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Hallo!

    Ich stehe wieder mal vor einem äußerst eigenartigen Problem und verstehe beim besten Willen nicht was da los ist..

    Ich habe einen String und will das vorletzte Vorkommen eines Zeichens herausfinden.
    Das ist der Code:

    int index1 = fileContent.LastIndexOf("a", StringComparison.InvariantCulture);
    int index = fileContent.LastIndexOf("a", 0, index1, StringComparison.InvariantCulture);


    Bei index bekomme ich dann jedoch eine ArgumentOutOfRangeException.

    Die Anzahl muss positiv sein und auf eine Position in der dem Zeichenfolge/Array/Auflistung verweisen.


    Komisch, denn hier sind die Werte dazu:

    fileContent.Length: 3944
    index1: 3941


    Außerdem hätte ich mir da sowieso eher eine IndexOutOfRangeException erwartet.. Welches Argument soll da bitte out of range sein?

    Danke im Voraus!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo yorecords,

    da die LastIndexOf-Suche von hinten nach vorne durchgeführt wird musst Du als Startindex den letzten/größten zu durchsuchenden Index angeben. Insbesondere muss der Startindex größer als die Länge des zu suchenden Strings sein.
    Korrekt muss es also lauten:
    int index1 = fileContent.LastIndexOf("a", StringComparison.InvariantCulture);
    
    int index = -1;
    if(index1 > 0)
      index = fileContent.LastIndexOf("a", index1-1 StringComparison.InvariantCulture);



    Beitrag zuletzt geändert: 26.12.2012 0:17:29 von darkpandemic
  4. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    darkpandemic schrieb:
    Hallo yorecords,

    da die LastIndexOf-Suche von hinten nach vorne durchgeführt wird musst Du als Startindex den letzten/größten zu durchsuchenden Index angeben. Insbesondere muss der Startindex größer als die Länge des zu suchenden Strings sein.
    Korrekt muss es also lauten:
    int index1 = fileContent.LastIndexOf("a", StringComparison.InvariantCulture);
    
    int index = -1;
    if(index1 > 0)
      index = fileContent.LastIndexOf("a", index1-1 StringComparison.InvariantCulture);



    Oh Gott... Vielen Dank!
    Ich hab nicht gewusst dass von hinten nach vorne gesucht wird, obwohl es ja durchaus logisch ist..
    Aber komisch dass ich vorher noch nie auf dieses Problem gestoßen bin..

    Beitrag zuletzt geändert: 26.12.2012 14:36:45 von yorecords
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!