Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Servus,
ich habe in einem Fenster ein Eingabefeld.
In dem Eingabefeld kann man nur Zahlen erwünscht, denn ich möchte Koordinaten berechnen.
Jedoch kann ich nicht Input1 + Input2 berechnen, da ich ja nicht zwei Strings berechnen kann.
Hat jemand eine Idee wie ich jenes Umsetzen kann.
Also kann ich ein String zu einem Integer "umwandeln"(?), wenn ja wie.
Vielen Dank schonmal
Lg
Vielen Dank für deine Antwort.
Hat alles super geklappt.
Gibt es diese Funktion auch für Strings:
Wenn in dem String eine Zahl ist oder Sonderzeichen, dann ...
Eine möglichkeit wäre eine if abfrage wie z.B.:
String.contains und dann alle Zeichen, scheint aber, als würde es dort eine bessere Methode geben
Ich könnte es bestimmt auch mit .length machen und dann einer for-schleife die überprüft (für jeden char), ob eine Zahl oder Sonderzeichen vorhanden ist, aber da muss auch eine bessere Methode sein... ich weiß nur noch nicht wo
Der korrekte Reguläre Ausdruck für Double-Parsing sehe wie folgt aus laut Oracle:
Java:
final String Digits = "(\\p{Digit}+)";
final String HexDigits = "(\\p{XDigit}+)";
// an exponent is 'e' or 'E' followed by an optionally
// signed decimal integer.
final String Exp = "[eE][+-]?"+Digits;
final String fpRegex =
("[\\x00-\\x20]*"+ // Optional leading "whitespace"
"[+-]?(" + // Optional sign character
"NaN|" + // "NaN" string
"Infinity|" + // "Infinity" string
// A decimal floating-point string representing a finite positive
// number without a leading sign has at most five basic pieces:
// Digits . Digits ExponentPart FloatTypeSuffix
//
// Since this method allows integer-only strings as input
// in addition to strings of floating-point literals, the
// two sub-patterns below are simplifications of the grammar
// productions from section 3.10.2 of
// The Java™ Language Specification.
// Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt
"((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+
// . Digits ExponentPart_opt FloatTypeSuffix_opt
"(\\.("+Digits+")("+Exp+")?)|"+
// Hexadecimal strings
"((" +
// 0[xX] HexDigits ._opt BinaryExponent FloatTypeSuffix_opt
"(0[xX]" + HexDigits + "(\\.)?)|" +
// 0[xX] HexDigits_opt . HexDigits BinaryExponent FloatTypeSuffix_opt
"(0[xX]" + HexDigits + "?(\\.)" + HexDigits + ")" +
")[pP][+-]?" + Digits + "))" +
"[fFdD]?))" +
"[\\x00-\\x20]*");// Optional trailing "whitespace"
if (Pattern.matches(fpRegex, myString))
Double.valueOf(myString); // Will not throw NumberFormatException
else {
// Perform suitable alternative action
}
Für int würde es fast gehen, wenn man den Dezimalzentrenner und damit die Nachkommastellen weglässt, sowie das + Zeichen am Anfang erlaubt.
Da hast Du vollkommen Recht, aber wir wissen ja nicht was der TE verarbeiten können möchte.
Ich erhebe mit meinem Beispiel keinen Anspruch auf Vollständigkeit. Sondern wollte nur ein Beispiel dafür bringen, was man machen könnte ohne über alle Chars iterieren zu müssen.
Das was der TE braucht kann er sich ja dann selber zusammen bauen.
Reguläre Ausdrücke
Vorteil: Performanter
Nachteil: Schwierig synchron zu halten, dass es all das durchlässt, was die jeweilige Parse-Funktion akzeptiert
Exception fangen
Vorteil: Man kann wirklich alles verarbeiten, was die die jeweilige Parse-Funktion akzeptiert
Nachteil: Exception + Stacktrace erzeugen ist eine relativ teuere Operation. In einer Massenverarbeitung ist das nicht umbedingt sinnvoll sich alleine darauf zu verlassen