String auf Zahlen reduzieren

Gast #6376951
Lesenswert?

Dimha B. schrieb:
> Natürlich wird bei einem Algorithmus, der
> die Zahlen im String erkennen soll, auch die eins sehen

das E vermutlich allerdings nicht, ist ja schließlich keine Ziffer. 
Deine gesuchte Funktion würde also ggf: 17003 zurückgeben. Ich glaube 
das hilft dir nicht. Prüf doch vielleicht eher mal, ob du immer die 
gleiche Zeichenfolge erwarten kannst. Dann könntest du erst trimmen und 
dann Parsen
Gast #6376969
Lesenswert?

Je nach Zusammensetzung der Zeichenfolge:

1.) Position 1. Leerzeichen suchen .FirstIndexOf(' ')
2.) Position 2. Leerzeichen suchen .LastIndexOf(' ')
3.) Zeichenkette dazwischen ist die gesuchte Zahl .SubString(i1, i2-i1) 
oder so ähnlich
#6377000
Lesenswert?

Der String ist ja durch space unterteilt.

1. String in Teistrings ohne space zerlegen
2. auf jeden Teistrings atoi bzw atof anwenden
3. Prüfen ob das fehlerfrei möglich war
4. Teilstrings ohne Fehler enthalten Zahlen

So würde ich das in C machen. Wie das bei dir geht must du rausfinden. 
Micha hat dazu ja ein paar Hinweise gegeben. Dieses Grundgerüst kannst 
falls notwendig zu einem kompletten Parser für deine Strings ausbauen.
#6377036
Lesenswert?

Dimha B. schrieb:
> Beispiel:
> "C1:VDIV 700E-3 V"
Dabei handelt es sich offenbar um Daten eines Oszis. Das Datenformat 
sollte dokumentiert sein, etwa das da?
http://cdn.teledynelecroy.com/files/manuals/wa1k2k_remote-control_manual.pdf

Dafür schreibe man sich einen Parser, der weiß, in welcher Reihenfolge 
Zeichen, Symbole, Zahlen etc. vorkommen können. Beschrieben ist das im 
verlinkten PDF z.B. mit
[header_path:]<header>[?] [<data>,...,<data>]
Dann lassen sich die gewünschten Werte, hier data, eindeutig 
extrahieren.

> Natürlich wird bei einem Algorithmus, der
> die Zahlen im String erkennen soll, auch die eins sehen
Das wäre ein für diesen Anwendungsfall überhaupt nicht passender 
Algorithmus.
Gast #6377107
Lesenswert?

Dimha B. schrieb:
> "C1:VDIV 700E-3 V"

Ich sehe in dem String mindestens zwei Zahlen. Offenbar brauchst du 
einen Algorithmus, dem du mitteilen kannst, welche der beiden Zahlen du 
extrahieren willst.

Es sei denn, man kann sich darauf verlassen, dass vor und hinter der 
Zahl ein Leerzeichen kommt falls die Zahl nicht ganz am Anfang oder Ende 
des Strings steht.

Man kann das mit regulären Ausdrücken erledigen oder mit verschachtelten 
Schleifen. Die Schleifen sind wahrscheinlich schneller.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren