![]() |
Stringvergleich Routine
Hallo,
ich habe ein denke ich recht simples Problem, wenn man die String-Funktionen von Delphi gut kennt... Ich will einen Stringvergleich auf n- Positionen machen, im einfachsten Fall will ich folgenden String vergleichen: '3201.200' 'XXXX.2XX' Also ich will prüfen ob die 1. Ziffer nach dem Punkt eine 2 ist. Gibt es eine Funktion die soetwas schon bewerkstelligt, oder muss ich Char für Char durchsteppen? Vielen Dank DelphiManiac |
Re: Stringvergleich Routine
Ist die Position des Punktes fix?
|
Re: Stringvergleich Routine
Reguläre Ausdrücke
Code:
Mindestens eine Zahl vor dem Punkt und direkt danach eine 2. Danach optional weitere Ziffern.
\b\d+\.2\d*\b
|
Re: Stringvergleich Routine
Die Funktion MatchesMask aus der unit Masks könnte helfen.
|
Re: Stringvergleich Routine
Wenn die Position fest ist
Delphi-Quellcode:
ist die Position nicht fest, es kommt aber auch nur ein Punkt drin vor
if Copy(S, 5, 2) = '.2' then
if Pos('.2', S) = 5 then
Delphi-Quellcode:
bei den Regulären dürfte auch dieses gehn
if Pos('.2', S) > 0 then
Code:
^\d+\.2\d*$
![]()
Delphi-Quellcode:
if MatchString('*.2*', S) then
// mindestens ein Zeichen vorm Punkt if MatchString('?*.2*', S) then |
Re: Stringvergleich Routine
Zitat:
Und wenn definiert ist, dass ^ und $ auch bei Zeilenumbrüchen greifen sollen, so hast Du ein noch größeres Problem ;) Aus diesem Grunde besser nur Wortgrenzen (\b) berücksichtigen, und nicht Zeilenanfang/-ende bzw. Stringanfang/-ende. |
Re: Stringvergleich Routine
Zitat:
Und da finde ich dieses ^ und $ etwas übersichtlicher. |
Re: Stringvergleich Routine
Zitat:
|
Re: Stringvergleich Routine
Zitat:
|
Re: Stringvergleich Routine
Zitat:
Machen wir es kurz: himitsu hat die spezielle und besser lesbare Lösung, ich die allgemein gültige ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 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