NEWS
[gelöst] Hilfe bei der Scripterstellung Eingabeüberprüfung
-
Hi, ich bräuchte mal Hilfe mit Javascript. Bin da ein DAU.
Folgender Aufbau: Zwei Felder zur Ausgabe, davon ein Zahlen- und ein Textfeld.
Zwei Variablen zur Eingabe:
let eins = '<testzeichenfolge>';
let zwei = '<testzeichenfolge>';
Bedingungen:
0a. Zahl ist dann Zahl, wenn <testzeichenfolge>ganzzahlig und >= 0
0b. Text ist dann Text, wenn <testzeichenfolge>ASCII-Zeichen oder einfache Steuerzeichen wie :/. mit dabei sind. Leerzeichen ist nicht dabei.
Logik:
1. Anwender gibt nichts ein ('')-> Text und Zahlenfeld sollen jeweils undefined sein
2. Anwender gib nur eine Zahl ein -> Zahl ins Zahlenfeld, Text ist undefined
3. Anwender gibt nur Text ein -> Zahl undefiniert, Text ins Textfeld
4. Anwender gibt Zahl und Text ein -> Text ins Textfeld und Zahl ins Zahlenfeld
5. Anwender gibt Text und Zahl ein -> Text ins Textfeld und Zahl ins Zahlenfeld
6. Anwender gib zwei mal Zahl ein -> Fehler und Text- und Zahlenfeld undefined
7. Anwender gibt zweimal Text ein -> Fehler und Text- und Zahlenfeld undefined
Ausgabe:
zahlenfeld = …
textfeld = "..."
Komme mit den ganzen if / parseInt(..., 10) / !== / NaN() einfach nicht klar.</testzeichenfolge></testzeichenfolge></testzeichenfolge></testzeichenfolge>
-
Wo etwas wie
eins='hallo';
zwei=0;
// Ist eins ein Text oder leer -> Fülle zwei mit eins und setze eins NULL
// Ist zwei eine Zahl -> Fülle speicher mit eins, eins mit zwei, zwei mit speicher
// ist eins eine Zahl -> konvertiere eins in Zahl
text=zwei;
zahl=eins;
Vergesse ich das was? Ist meine Logik richtig?
-
Was macht diese Zeile? Ich bitte um Hilfe.
if (parseInt(eingabe, 10).toString() !== (eingabe || '').toString()) {
Meine Vermutung:
-
parseInt(eingabe, 10).toString() versucht, aus eingabe eine Zahl zu machen und daraus einen String
-
(eingabe || '').toString() macht aus eingabe einen String
-
!== ist ein vollständiger Vergleich ohne Konvertierung der beiden Seiten auf Ungleichheit
Also wird geprüft, ob eingabe eine Zahl ist. Wenn nein, wird der if-Block ausgeführt.
Doch was ist, wenn eingabe die Zahl 0 ist? (eingabe || '').toString() ist da leer, oder?
Wie funktioniert das mit der 0 in diesem Fall, damit das funktioniert? Wie muss das Statement umgeschrieben werden, damit 0 auch als gültige Zahl erkannt wird und sich sonst nichts an der Funktionalität ändert?
-
-
Wie funktioniert das mit der 0 in diesem Fall, damit das funktioniert? `
Es wird vorausgesetzt, dass eingabe ein String ist. Mit '0' als Eingabewert funktioniert die Prüfung. -
eingabe wird mit einem Wert von argv[] (kommt von 'yargs') mit z.B. ~~[i]~~let eingabe = argv[2] initialisiert. Ich mag den Datentyp von eingabe nicht einfach ändern, da ich nicht weiß, was mit eingabe im weiteren Verlauf im Programm (nicht von mir) passiert.
oder meinst du sowas wie
if (parseInt(eingabe, 10).toString() !== (eingabe.toString() || '').toString()) {
Kann das bei NULL oder anderen Zuständen für eingabe irgendwelche Probleme machen?
-
Kann das bei NULL oder anderen Zuständen für eingabe irgendwelche Probleme machen? `
Ja, kann es. Versuche es so:if(eingabe === 0) eingabe = '0'; if(parseInt(eingabe, 10).toString() !== (eingabe || '').toString()) {
-
Danke. Gelöst.