Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erste Position einer Zahl in einem String? (https://www.delphipraxis.net/168110-erste-position-einer-zahl-einem-string.html)

codipodi 5. Mai 2012 13:52

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

DeddyH 5. Mai 2012 14:08

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;

codipodi 5. Mai 2012 14:26

AW: Erste Position einer Zahl in einem String?
 
funktioniert, danke! Besser geht es nicht.

LG,
Christian

mleyen 5. Mai 2012 14:28

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;

ASM 5. Mai 2012 14:56

AW: Erste Position einer Zahl in einem String?
 
Da muss offensichtlich signifikant nachgebessert werden.
Denn wo sind evt. vorhandene Vorzeichen, "+" und "-", berücksichtigt ?

Sir Rufo 5. Mai 2012 15:21

AW: Erste Position einer Zahl in einem String?
 
Zitat:

Zitat von ASM (Beitrag 1165005)
Da muss offensichtlich signifikant nachgebessert werden.
Denn wo sind evt. vorhandene Vorzeichen, "+" und "-", berücksichtigt ?

Der TE meinte wohl erste Ziffer und nicht erste Zahl ;)

Popov 5. Mai 2012 18:04

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 01:46 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