Hallo, wie kann ich in C# einen String auf seine Zahlen reduzieren? Beispiel: "C1:VDIV 700E-3 V" hätte gerne die 700*10hoch-3. Natürlich wird bei einem Algorithmus, der die Zahlen im String erkennen soll, auch die eins sehen
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
1 | double Wert = Double.Parse(DeinString.Split(' ')[1], System.Globalization.NumberStyles.Float); |
Dimha B. schrieb: > Dimha B. schrieb: >> 700*10hoch-3 > > ja das ist Rauschen 0,7V sind Rauschen? Denk nochmal nach...
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
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.
:
Bearbeitet durch User
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.
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.
Dimha B. schrieb: > "C1:VDIV 700E-3 V" Hallo, wenn das Format für jede Zeile stimmt, dann: string test = "C1:VDIV 700E-3 V"; string[] input = test.Split(' '); double zahl = Convert.ToDouble(input[1]);
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.