Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringvergleich Routine (https://www.delphipraxis.net/147738-stringvergleich-routine.html)

DelphiManiac 15. Feb 2010 11:36


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

mkinzler 15. Feb 2010 11:42

Re: Stringvergleich Routine
 
Ist die Position des Punktes fix?

s-off 15. Feb 2010 11:43

Re: Stringvergleich Routine
 
Reguläre Ausdrücke
Code:
\b\d+\.2\d*\b
Mindestens eine Zahl vor dem Punkt und direkt danach eine 2. Danach optional weitere Ziffern.

Stevie 15. Feb 2010 12:06

Re: Stringvergleich Routine
 
Die Funktion MatchesMask aus der unit Masks könnte helfen.

himitsu 15. Feb 2010 12:07

Re: Stringvergleich Routine
 
Wenn die Position fest ist
Delphi-Quellcode:
if Copy(S, 5, 2) = '.2' then

if Pos('.2', S) = 5 then
ist die Position nicht fest, es kommt aber auch nur ein Punkt drin vor
Delphi-Quellcode:
if Pos('.2', S) > 0 then
bei den Regulären dürfte auch dieses gehn
Code:
^\d+\.2\d*$
http://www.delphipraxis.net/internal...062424#1062424
Delphi-Quellcode:
if MatchString('*.2*', S) then

// mindestens ein Zeichen vorm Punkt
if MatchString('?*.2*', S) then

s-off 15. Feb 2010 12:59

Re: Stringvergleich Routine
 
Zitat:

Zitat von himitsu
bei den Regulären dürfte auch dieses gehn
Code:
^\d+\.2\d*$

Aber nur, wenn der gesuchte Ausdruck das einzige Element der Zeile ist, was wir nicht wissen, was aber eher unwahrscheinlich sein dürfte.
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.

himitsu 15. Feb 2010 13:42

Re: Stringvergleich Routine
 
Zitat:

Ich will einen Stringvergleich auf n- Positionen machen, im einfachsten Fall will ich folgenden String vergleichen:

'3201.200'
Es sollte also der komplette String sein. :angel2:

Und da finde ich dieses ^ und $ etwas übersichtlicher.

s-off 15. Feb 2010 14:18

Re: Stringvergleich Routine
 
Zitat:

Zitat von himitsu
Zitat:

Ich will einen Stringvergleich auf n- Positionen machen, im einfachsten Fall will ich folgenden String vergleichen:

'3201.200'
Es sollte also der komplette String sein. :angel2:

Und da finde ich dieses ^ und $ etwas übersichtlicher.

Okay, Dein Punkt ;)

DeddyH 15. Feb 2010 14:19

Re: Stringvergleich Routine
 
Zitat:

Ich will einen Stringvergleich auf n- Positionen machen, im einfachsten Fall will ich folgenden String vergleichen:

'3201.200'
Nunja, kann man sich jetzt drüber streiten :roll:

s-off 15. Feb 2010 14:28

Re: Stringvergleich Routine
 
Zitat:

Zitat von DeddyH
Zitat:

Ich will einen Stringvergleich auf n- Positionen machen, im einfachsten Fall will ich folgenden String vergleichen:

'3201.200'
Nunja, kann man sich jetzt drüber streiten :roll:

Hmmmm, Recht hast Du - so leicht lasse ich mich also beeinflussen :zwinker:

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 02:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz