C# Zahl(double) aus String parsen

Gast #2348557
Lesenswert?

hallo,

ich habe folgende funktion in c++ verwendet um aus einem relativ großem 
String, nach dem jeweiligem Schlüsselwort, die benötigte Zahl zu parsen.
Leider gibt habe ich in C# keine funktion ähnlich der von "strtod" 
gefunden.
Hat jemand einen ersatz für diese Funktion oder wie macht man das in C#.
Ich habe die Start Position der Nummer im String und benötige dann die 
Endposition zurück.
1
   
2
 bool read_double(string line, int* char_counter, double* double_ptr)
3
    {
4
        // pointer to a counter for position on the line
5
        // pointer to double to be read
6

7
        char *start = line + *char_counter;
8
        char *end;
9
        string tmp;
10

11
        *double_ptr =  strtod(start, &end);
12
        
13
        if(end == start)
14
        {
15
            FAIL(WRONG_FORMAT);
16
            return(false);
17
        };
18

19
        char_counter = end - line;
20
        return(true);
21
    }

Danke für die Hilfe
Gast #2348569
Lesenswert?

mein string sieht in etwa so aus:
'länge123.1234Breite1233.123tiefe1234234'

mit double.parse müsste ich ja alles erst per hand splitten und das wäre 
zusätzlicher aufwand. Mit Pointern oder Positionsangaben wie bei 
"strtod(start, &end);" ist das doch viel effektiver.

gibt es da nix besseres? Es kann doch nicht sein das man bei einer 
Sprache wie C# das alles per hand machen muss.
#2348687
Lesenswert?

tobi schrieb:
> mein string sieht in etwa so aus:
> 'länge123.1234Breite1233.123tiefe1234234'
>
> mit double.parse müsste ich ja alles erst per hand splitten und das wäre
> zusätzlicher aufwand. Mit Pointern oder Positionsangaben wie bei
> "strtod(start, &end);" ist das doch viel effektiver.

Wie viele Zeilen müssen denn in welcher Zeit geparst werden?
1
var s = "Länge123.1234Breite1233.123Tiefe1234234";
2

3
var parts = s.Split(new string[] { "Länge", "Breite", "Tiefe" }, StringSplitOptions.RemoveEmptyEntries);
4

5
// parts enthält das, was man erwarten würde
6
// parts[0] = "123.1234"
7
// parts[1] = "123.123"
8
// parts[2] = "1234234"


> gibt es da nix besseres? Es kann doch nicht sein das man bei einer
> Sprache wie C# das alles per hand machen muss.

s.o. oder Regex

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