Punkt in Texteingabe finden
Hallo Leute,
dank eurer Unterstützung bin ich die ganze Woche gut voran gekommen, aber heute habe ich ein besonderes Brett vorm Kop!
Ich habe eine TextBox in die der Anwender Zahlen eingeben soll. Dazu habe ich mit InputScope InputScopeNameValue.Number; die Onscreen Tastatur auf Zahleneingabe eingestellt. Leider ist auf dem Tastenfeld ein Punkt enthalten und wenn der eingegeben wird, funktioniert meine anschließende Berechnung nicht.
Ich wollte das jetzt mit einer if / else Anweisung machen aber so wie ich das sehe gibts dazu keinen passenden Operator mit dem ich prüfen kann "enthält einen ."
Habt ihr einen Tipp für mich?
Gruß
Det
AW: Punkt in Texteingabe finden
sobald ein Punkt verwendet wird, ist es kein Integer mehr. Dann kannst du z.B. einfach überprüfen, ob es sich bei der Zahl um einen Integer handelt...
Gruss casaout
AW: Punkt in Texteingabe finden
Wenn du in einem Text prüfen willst ob ein bestimmtes Zeichen oder eine bestimmte Zeichenfolge enthalten ist verwendest du am besten die Methode "IndexOf". Diese gibt dir die erste Position in dem String zurück an dem die gesuchte Zeichenfolge auftritt. Taucht sie nicht auf so gibt IndexOf den Wert -1 zurück.
D.h. "bla.blub".IndexOf(".") == 3
"blablub".IndexOf(".") == -1
Du kannst natürlich auch hergehen und den Text aus dem Eingabefeld zuerst als Decimal parsen und dann nach Integer casten (dabei wird dann der Nachkommaanteil einfach verworfen.
Also:
int myNumber = (int)Decimal.Parse(textBox.Text);
Wobei, wenn es ein Punkt ist und kein Komma, dann musst du das ganze mit der InvariantCulture parsen, sonst interpretiert er den Punkt nicht als Komma.
AW: Punkt in Texteingabe finden
Hallo zusammen,
danke für die schnelle Hilfe!
Ich habe es dann mit:
D.h. "bla.blub".IndexOf(".") == 3
"blablub".IndexOf(".") == -1
sehr schnell lösen können und habe dabei wieder etwas gelernt (so muss das sein)!
Ich danke euch sehr !!!
AW: Punkt in Texteingabe finden
int number;
if(int.TryParse(text, out number))
{
//korrekt
}
else
{
Es ist ein Fehler aufgetreten
}
So fängst du auch ab, dass zahlen zu groß sein können um sie als Integer zu schreiben. Da hast du die Rundum-Sorglos-Lösung
AW: Punkt in Texteingabe finden
Dürfte ich mal Fragen warum ihr dies mit IndexOf umständlich lösen wollt, wenn man doch die Methode Contains bei Strings hat?
(Code aus dem Kopf geschrieben, sollte aber so funktionieren)
Code:
String number = "132132.123123";
if(number.Contains(".") == true)
number = number.Replace(".", "");
//Wobei man auch direkt nur das Replace verwenden kann ohne die if abfrage
//code von pdelvo
Und als kleine Info. Ich würde Punkte und Kommas einfach ignorieren und so tun als wäre dieser nicht vorhanden, weil je nach Region der Punkt/das Komma von Usern benutzt werden könnte bei der Eingabe um bei großen Zahlen die Tausender Stellen zu trennen.
So lange du nur integer betrachtest musst du dir um die Culture allerdings keine gedanken machen.