![]() |
Pos und Delete
Hi,
Ich habe einen String z.B.: S:= 'Umsatz: 88€' und ich möchte nun nur den Betrag filtern. S2:= '88'; Wie kann ich das am besten realisieren. Ich hab an Pos und delete gedacht, allerdings hab ich damit noch nicht wirklich gearbeitet. |
Re: Pos und Delete
Guten Abend,
ist der String immer so aufgebaut? Also vor dem Betrag ein Leerzeichen und nach dem Betrag ein € Zeichen? Grüße Klaus |
Re: Pos und Delete
Als erstes prüfen, ob der Such-String identifiziert werden kann (in deinem Fall nicht, Beträge sind immer anders), dann also immer gültige Begrenzung ermitteln:
Betrag folgt (hoffentlich) immer nach einem Doppelpunkt. Also alles bis zum Doppelpunkt löschen:
Delphi-Quellcode:
Jetzt hast Du " 88€" als Rest-String. Sofern es immer €-Beträge sind:
S := 'Umsatz: 88€'
Delete(S, 1, Pos(':', S));
Delphi-Quellcode:
Die 1024 ist hier nur, um nicht die Länge des String ermitteln zu müssen.
Delete(S, Pos('€', S), 1024);
Rest-String ist jetzt " 88", also noch Leerzeichen weg:
Delphi-Quellcode:
Die vorgehensweise hat einen Haken... Abweichungen beim Ausgangsstring werden nicht so leicht weggesteckt. Also sicherstellen, dass : und € vorhanden sind, ist schonmal Pflicht.
S := Trim(S);
|
Re: Pos und Delete
Zitat:
Ganz ehrlich: Was spricht hier gegen eine Verwendung von Length? Die zusätzliche CPU-Zeit dürfte kaum der Grund sein. //Nachtrag: Eine Alternative wäre die Verwendung von TPerlRegEx mit einer Regex, die nur auf numerische Zeichen anspringt, evtl. noch auf ".,-"... |
Re: Pos und Delete
Zitat:
|
Re: Pos und Delete
Ja String ist definitive immer gleich.
Danke euch ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz