AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringvergleich Routine

Ein Thema von DelphiManiac · begonnen am 15. Feb 2010 · letzter Beitrag vom 15. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Stringvergleich Routine

  Alt 15. Feb 2010, 12:36
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 12:42
Ist die Position des Punktes fix?
Markus Kinzler
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 12:43
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.
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 13:06
Die Funktion MatchesMask aus der unit Masks könnte helfen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 13:07
Wenn die Position fest ist
Delphi-Quellcode:
if Copy(S, 5, 2) = '.2then

if Pos('.2', S) = 5 then
ist die Position nicht fest, es kommt aber auch nur ein Punkt drin vor
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
$2B or not $2B
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 13:59
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.
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 14:42
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.

Und da finde ich dieses ^ und $ etwas übersichtlicher.
$2B or not $2B
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 15:18
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.

Und da finde ich dieses ^ und $ etwas übersichtlicher.
Okay, Dein Punkt
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 15:19
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Stringvergleich Routine

  Alt 15. Feb 2010, 15:28
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
Hmmmm, Recht hast Du - so leicht lasse ich mich also beeinflussen

Machen wir es kurz:
himitsu hat die spezielle und besser lesbare Lösung, ich die allgemein gültige
Gruß
s-off
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.
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