AGB  ·  Datenschutz  ·  Impressum  







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

Zahlen aus String parsen

Ein Thema von lbccaleb · begonnen am 8. Mai 2012 · letzter Beitrag vom 9. Mai 2012
Antwort Antwort
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#1

Zahlen aus String parsen

  Alt 8. Mai 2012, 10:40
Hey,

also ich hab einen Text vorliegen, der eigentlich immer gleich ist. In diesem Text befinden sich verschiedene Zahlen, die event. der Optikhalber auch mit Punkten unterteilt sind (bsp 1.234.567) oder auch ganz kurz sein können (bsp 0). Die einzelnen Zahlen können auch nur durch ein Leerzeichen voneinander getrennt sein. Nun möchte ich also diese Zahlen extrahieren. Gibt es da irgendwas fertiges, oder muss ich Wort für Wort durch den String gehen und auf Zahl oder Buchstabe überprüfen?

Oder hat jemand ne komplett andere/bessere Idee sowas vernünftig zu lösen?


Es sei noch gesagt, das es komplett nonVCL ist. Also keine Units sprich SysUtils usw.

Danke für Vorschläge im vorraus

mfg Martin
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Zahlen aus String parsen

  Alt 8. Mai 2012, 10:49
Wie wäre es alle Buchstaben und nicht benötigte Sonderzeichen zu Blanks (Unterstreicher,Ausrufezeichen...) zu machen und diese dann aus dem Text zu entfernen?
Dann sollten nur noch gültige Zahlen zurück bleiben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Zahlen aus String parsen

  Alt 8. Mai 2012, 10:56
Aber wie kann ich die dann danach effektiv voneinander trennen?
Die Zahlen dürfen sich ja nicht verändern dadurch oder gar zusammen geschmissen werden.

Ich hatte als erste des Idee es mit zwei Schleifen zu machen. Also die erste geht nach und nach den String durch und die zweite kommt dann in Aktion, wenn die erste ne Zahl gefunden hat. Aber da kommt halt die Idee, ob man das nicht irgendwie "besser" lösen könnte.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Zahlen aus String parsen

  Alt 8. Mai 2012, 10:59
.. ich würde die Trennzeichen vereinheitlichen und dann eine Funktion wie explode
nehmen um die Zahlen(Strings) in eine Liste zu bekommen.
Die Liste kannst Du dann weiter auswerten.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Zahlen aus String parsen

  Alt 8. Mai 2012, 11:09
Hier eine Funktion die eine Zahl ermittelt. Mit leichter Anpassung kann man auch alle Zahlen eines Strings ermitteln, bzw. um Tausender Zeichen erweitern.

Delphi-Quellcode:
    //Prüft auf Zahl im Strings, wie "Neuer Text (2)". Bei vorhanden sein
    //gibt StrB den Teil vor der Zahl, StrN die Zahl, StrE den Rest.
    function IsNumIn(Str: String; var StrB, StrNum, StrE: String): Boolean;
    var
      k: Integer;
    begin
      StrB := ''; // Text vor Zahl
      StrNum := ''; // Zahl
      StrE := ''; // Text nach Zahl

      k := 1;
      while k <= Length(Str) do
        if Pos(Str[k], '0123456789') = 0 then
        begin
          StrB := StrB + Str[k];
          Inc(k);
        end else Break;

      while k <= Length(Str) do
        if Pos(Str[k], '0123456789') > 0 then
        begin
          StrNum := StrNum + Str[k];
          Inc(k);
        end else Break;

      StrE := Copy(Str, k, Length(Str));
      Result := StrNum <> '';
    end;
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zahlen aus String parsen

  Alt 8. Mai 2012, 12:32
hi,

[EDIT]Hatte das mit dem NON-VCL überlesen... Hier einmal überarbeitet [/EDIT]


Delphi-Quellcode:
unit Unit2;

interface

type
  TStringArray = array of string;

procedure GetNums(AString: string; var AStrArray: TStringArray);

implementation

procedure GetNums(AString: string; var AStrArray: TStringArray);
var
  ndx: Integer;
  sHelp: string;
begin
  sHelp := '';
  SetLength(AStrArray, 0);
  for ndx := 1 to Length(AString) do
  begin
    if (AString[ndx] in ['0'..'9']) then
    begin
      sHelp := sHelp + AString[ndx];
    end
    else if (sHelp <> '') then
    begin
      SetLength(AStrArray, Length(AStrArray)+1);
      AStrArray[High(AStrArray)] := sHelp;
      sHelp := '';
    end;
  end;

  // Edit Ihr habt ja recht.
  if (sHelp <> '') then
  begin
    SetLength(AStrArray, Length(AStrArray)+1);
    AStrArray[High(AStrArray)] := sHelp;
    sHelp := '';
  end;
end;

end.
Ansgar

Geändert von angos ( 8. Mai 2012 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:03 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