![]() |
Delphi-Version: 5
Erste Position einer Zahl in einem String?
Hallo zusammen,
vermutlich habe ich erneut wieder ein triviales Problem, komme allerdings auch mit der Suchfunktion auf keine Lösung. Ich habe eine Textdatei und möchte die erste Position einer normalen Zahl (also 0,1,2,3,4,5,6,7,8 oder 9) finden. Gibt es eine einfache Möglichkeit die ich übersehe? Mir würde jetzt nur einfalle nach allen jeweils neu zu suchen und am Ende nachzuschauen welche Position die kleinste ist. Gibt es nicht sowas wie pos([0..9],string) ? Danke! LG, Christian |
AW: Erste Position einer Zahl in einem String?
Aus dem Kopf:
Delphi-Quellcode:
function FirstNumberPos(const s: string): integer;
var i: integer; begin Result := 0; i := 1; while (i <= Length(s)) and (Result = 0) do begin if s[i] in ['0'..'9'] then Result := i else inc(i); end; end; |
AW: Erste Position einer Zahl in einem String?
funktioniert, danke! Besser geht es nicht.
LG, Christian |
AW: Erste Position einer Zahl in einem String?
Delphi-Quellcode:
function FirstNumberPos(const s: string): Integer;
begin for Result := 1 to Length(s) do if s[Result] in ['0'..'9'] then Exit; Result := 0; end; |
AW: Erste Position einer Zahl in einem String?
Da muss offensichtlich signifikant nachgebessert werden.
Denn wo sind evt. vorhandene Vorzeichen, "+" und "-", berücksichtigt ? |
AW: Erste Position einer Zahl in einem String?
Zitat:
|
AW: Erste Position einer Zahl in einem String?
Zuverlässigerweise ist das Auffinden des letzten Zeichens aus einer Menge leichter als beim ersten Zeichen. LastDelimiter macht es vor. Und leicht geklaut kann man daraus eine FirstDelimiter Funktion machen.
Delphi-Quellcode:
Edit: Kommando zurück, da ist ein kleiner Fehler. Muß jetzt aber weg, korrigiere ihn später. Sorry.
...
Edit2: So wie es aussieht klappt es mit leicht geklaut nicht, d. h. man muss doch schon Anpassungen vornehmen. Man kann also aus der LastDelimiter nicht ohne weiteres FirstDelimiter machen, also kann man auch gleich neu programmieren. Und da die obere Funktion fehlerhaft war, habe ich sie vorsichtshalber erstmal entfernt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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