C# Zahl aus String lesen

Murphy9904

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
344
Hi,
ich hab nen String z.B. so: "10a"
ich will daraus ein Int machen -> 10

wie stell ich das am schlausen an?

(sind ja auch chars drinnen)

danke schonmal

Murphy
 
Steht die Zahl immer am Anfang? Dann könntest du vom Beginn aus die Zeichen einzeln prüfen, ob sie eine Ziffer darstellen. Sobald der erste Buchstabe kommt, brichst du ab, und machst aus dem bis dahin gelesenen Substring eine Zahl.
Das ganze hängt natürlich davon ab, wie genau deine Strings aussehen dürfen.
 
ne stehen nich immer am anfang.. aber stimmt so kann ichs machen.
is doch wurscht obs am anfang oder ende steht?!

Danke für den Denkanstoß

Code:
string result = "";
 foreach (char chr in stringToConvert)
            {
                if (Convert.ToInt32(chr) >= 0x32 && Convert.ToInt32(chr) <= 0x39)
                {
                    result += chr;
                }
            }
int resultAsInt Convert.ToInt32(result);
 
Konvertiere das in ein Char Array und per For Schleife durchgehen und auf Nummer prüfen.

Wenn das Format immer 10a ist, wäre das z.B. eine Möglichkeit.
 
funktioniert doch auch so prima
@frow string is doch schon ein char array ;P

regex kann ich nich besonders
mir reicht das schon so
danke
 
priestor schrieb:
string ist eine klasse

... in der ein char Array steckt

also char bla = "bin ein string"[3] ist möglich
 
muss man deswegen trotzem nich umwandeln ;)

aber danke, das Thema is erledigt Leute ;)

Edit: danke coldcut
 
Nö, tut sie nicht.

Code:
      string str = "a10b";
      int i = Int32.Parse(str);

gibt garantiert eine FormatException.
 
Regex ist langsam. Ein String ist ein char-Array, so dass du mit der foreach-Schleife durch den String iterieren kannst. Mit char.IsDigit(charValue) fragst Du ab, ob es ein Zeichen ist.
 
xD genau dafür sind aber regular expressions da...
 
InEv1L schrieb:
genau dafür sind aber regular expressions da...
Bitte doch aber nicht für so einen Schnulli! Die Vorgehensweise ist eine einzige Schleife und das wars. Prüfen ob Zahl, wenn ja Zeichen an neuen String anhängen und anschließend als int/double zurückgeben. Man kann auch mit Kanonen auf Spatzen schießen!

Regexps kannst du gern bei komplexen Sachen verwenden um z.B. eMail-Adressen zu verifizieren.
Code:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b
\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]
(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c
\x0e-\x7f])+)\])
 
das stimmt scho das regexp sicher für so dinge gemacht sind
trotzdem is meiner ansicht nach eine regexp schöner als irgend ne schleife drumrum
is warscheinlich ansichtssache wies der programmierer lieber mag
 
Mich würde aber mal interessieren, wie du den Ansatz bei regulären Ausdrücken machst. Erst schreibst du den Query (für Anfänger sehr kompliziert), dann verwendest du in PHP z.B. preg_match_all (Regexps in C# habe ich noch nie benutzt, daher das PHP Beispiel), dann gehst du alle Treffer mittels Schleife durch, hängst sie an einen String an und gibst sie als Zahl zurück.

Wo ist hierbei der Vorteil von Regexps? Imo verkompliziert man die Sache hier nur.
 
Zurück
Oben