Textvergleich bzw. contains und replace

  • VB.NET
  • .NET 4.0

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

    Textvergleich bzw. contains und replace

    Hallo zusammen,

    ich lese ein Textdokument zeilenweise aus.
    In diesem Text befinden sich z.B. viele Namen. Mit InStr lese ich mir diese Namen aus.

    in einer zweiten Datei existieren diese Namen auch. Leider nicht immer gleichgeschrieben (groß/klein).
    die zweite Datei durchsuche ich zeilenweise, mit contains, nach einem bestimmten vorkommen von der ersten Datei z.B. (Maximiliano).
    Damit ich alle vorkommen finde muss ich vorher die Zeile mit UCase in großbuchstaben umformatieren. Den gesuchten Text natürlich auch.
    Dies ist natürlich nicht schön und benötigt auch mehr resurcen.

    Das Thema mit groß und kleinschreibung (ucase und lcase) ist ja schon bekannt und funktioniert auch.
    Auch Textvergleich (option compare) ist mir bewusst. Aber leider funktioniert das nicht mit der contains oder replace methode.

    vieleicht hat jemand einen Tip
    Sobald Du alle VB6-Funktionen losgeworden bist, beschreibe bitte das Problem nochmal. UCase(Text) -> Text.ToUpper, LCase(Text) -> Text.ToLower, InStr(Text, ZuFindenderText) -> Text.IndexOf(ZuFindenderText). Inwieweit frisst das (in relevanter Menge) Ressourcen? Was funktioniert konkret nicht? Gib bitte ein paar Beispiele mit momentanen Ist-Ergebnis und Soll-Ergebnis.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Quellcode

    1. lines(m) = Replace(UCase(lines(m)), UCase(Global_DETAILS(i).VorName), UCase(dgv_dat.Rows(i).Cells(1).Value))


    In der global_details befinden sich die Namen der ersten Datei
    die zweite Datei habe zeilenweise ausgelesen (lines()) und suche die Namen von der ersten Datei (global_details()).
    Ersetzt werden diese gefundenen Namen mit einem Value aus meinen Datagrid.

    Soweit so gut. Funktionieren tut es. allerdings nur weil ich alles auf großschreibung habe.
    Das müsste doch auch anders gehen (option compare text im Modul funktioniert nicht bei contains oder replace)

    Ich hoffe ich habe mich klar ausgedrückt.
    Coole Sache. Die VB6-Funktionen bleiben, Beispiele gibt's keine. Damit bin ich mal hier weg.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @hugoboss28 Suche Dir die .NET-String-Operationen mit der Vergleichsoption IgnoreCase, da kannst Du die Groß-Klein-Konvertiereung weglassen und Dein Code wäre lesbar.
    Verwende folgenden Google-Suchstring: MSDN string.replace in diesem Fall für Replace.
    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!
    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!

    hugoboss28 schrieb:

    Ein kleiner Hinweis auf neuere funktionen hätte gelangt.

    VaporiZed schrieb:

    UCase(Text) -> Text.ToUpper, LCase(Text) -> Text.ToLower, InStr(Text, ZuFindenderText) -> Text.IndexOf(ZuFindenderText)
    Das sind die Ersatzfunktionen …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Der Programmator
    Suche Dir die .NET-String-Operationen mit der Vergleichsoption IgnoreCase, da kannst Du die Groß-Klein-Konvertiereung weglassen und Dein Code wäre lesbar.
    Verwende folgenden Google-Suchstring: MSDN string.replace in diesem Fall für Replace.



    das ist doch mal ne Ansage. Danke!

    hugoboss28 schrieb:

    offensichtlich benutze ich alte funktionen wie ich dich verstanden habe.
    Ein kleiner Hinweis auf neuere funktionen ...
    Hintergrund ist ein fundamentaler Design-Fehler in VB.Net
    Man kann und sollte ihn (unbedingt!!!) ausbügeln.
    Alle Anfänger tun sich mit dieser Umstellung immer ungeheuer schwer, aber es führt kein Weg drum herum: Visual Studio - Empfohlene Einstellungen