int-Wert aus String-Wert machen
-
Hi,
ich bin gerade dabei ein Programm zu schreiben, das aus einer Funktion einen Graphen zeichnet (lineare- und quadratische Funktionen)
Nun versuche ich aus einem String, den der Benutzer eingibt, die Zahlen raus zuholen. Das Problem ist, dass ich erstmal nur die Zahlen brauche, die ich dann in Variablen speichern kann. Und danach nur die Char-Werte, die ich dann ebenfalls in Variablen speichern kann.
Ich wäre sehr dankbar wenn jemand einen Lösungsvorschlag hätte.
-
Servus,
du nimmst dir den Text und packst ihn erstmal in einen variable vom typ string. Dann gehst du mit einer Zähler-/Kopfgesteuerteschleife über jedes einzelne Zeichen des Strings drüber und schaust mit "char.IsNumber()" ob der eingebene Wert in den ASCII Bereichen von 0x30h - 0x39h liegt. Diese Zeichen kannst du dann in eine separaten String packen und ihn dann später mit Convert.ToInt / ToDouble() etc. in deinen gewünschten Datentyp konvertieren.
Stichworte:
- for()
- foreach()
- char
- string
- Convert.ToXXX
- Indexer[]mfg
Hellsgore
-
Kann man Kopfgesteuerteschleifen mit dme kopf steuern?
-
Sagmal schrieb:
Kann man Kopfgesteuerteschleifen mit dme kopf steuern?
Ja - aber nur mit Inhalt - fällt bei dir also flach...
-
Ich hab doch Schleifen mit inhalt
-
Danke schon mal für die Antwort. Die hat mir schon mal sehr geholfen.
Ich habe es folgendermaßen versucht:for (int i = 0; i < textBox1.Text; i++) { if (char.IsNumber(eingabe[i])) { Zahlen[i] = Convert.ToInt32(textBox1.Text[i]); //Zahlen==int[]-Array } label1.Text = Zahlen[i].ToString(); //Zahlen sollen im label1 angezeigt werden }
Leider klappt es nicht so wie ich es will. Wenn ich eine 1 eingebe wird mir komischerweise eine 49 angezeigt. Bei einer 0 wird eine 48 angezeigt. Bei 2: eine 50, usw.
Hat da jemand eine Idee was da falsch läuft?
-
Hollowman schrieb:
Leider klappt es nicht so wie ich es will. Wenn ich eine 1 eingebe wird mir komischerweise eine 49 angezeigt. Bei einer 0 wird eine 48 angezeigt. Bei 2: eine 50, usw.
Hat da jemand eine Idee was da falsch läuft?Das ist laut ASCII - Tabelle der ASCII-Dezimalwert der Zahlen ...guck mal in die ASCII-Tabelle ...http://de.wikipedia.org/wiki/ASCII-Tabelle
Gruss Alex ...
-
Oh, danke. Da wäre ich nicht drauf gekommen.
Aber wie kann ich das in die richtige Zahl konvertieren?
Irgendwie fällt mir da keine Funktion für ein.
-
Hollowman schrieb:
[cpp]
for (int i = 0; i < textBox1.Text; i++)
{
if (char.IsNumber(eingabe[i]))
{
Zahlen[i] = Convert.ToInt32(textBox1.Text[i]); //Zahlen==int[]-Array
}
label1.Text = Zahlen[i].ToString(); //Zahlen sollen im label1 angezeigt werden
}WTF: warum willst du,obwohl du weisst das es eine Zahl ist, diese Umwandeln? Rein logisch gesehen?
Überprüf Doch , ob es ein String ist, dann wandele um, wenns eine Zahl ist, lass es?
Oder denke ich zu einfach? ... kenne die Syntax nicht, müsste aber sicher auch
char.IsString
oder so geben.
Gruss Alex
-
Servus,
gucke mal hier:
string text = this.textBox.Text; string numbers = string.Empty; string characters = string.Empty; foreach ( char c in text ) { if ( char.IsNumber(c) ) numbers += c; else characters += c; }
so könntest du es basteln. Dann hast du deine Zahlen in Numbers und deine Zeichen in Characters. Ansonsten empfehle ich dir einfach mal ein paar Tutorials zum Thema Datentypen in C# durchzuarbeiten. Unter der Rubrik C++ Magazin findet sich ein auch ein schöner Artikel über die Datentypen bei .Net / C#.
mfg
Hellsgore
-
Danke für die freundlichen Antworten und die Hilfe.
Hat nun alles geklappt.
Sollte ich wieder Fragen haben, hoffe ich das ich wieder so gut beraten werde von euch.