Frage von Fragantherr, 37

Wie kann man mit JavaScript eine ausgeschriebene Zahl wie "drei" ebenso erkennen wie "3"?

Hi, ist es möglich in einer JavaScript-Function eine Zahl mit einem Wort definieren? Ich würde gerne eine ausgeschriebene Zahl in aus einem Textfeld wie "drei" oder "zwei" ebenso erkennen können wie "3" oder "2".

Antwort
von Berny96, 26

Klar :) Das geht aber leider nicht direkt dynamisch (für jede Zahl im Universum), beziehungsweise müsstest du dafür ein wenig komplizierter vorgehen als ich dir jetzt zeige, bei Interesse aber einfach fragen. Wenns aber erstmal nur um eine bestimmte Menge von Zahlen geht, 0-9? würde man es vielleicht so machen:

Ein Objekt definieren was Attribute enthält die so heißen wie die ausgeschriebene Zahlen die jeweils als Wert die eigentliche Zahl enthalten. Also so:

let zahlen = {
 eins: 1,
 zwei: 2,
 drei: 3
 etc.
}

Jetzt kannst du für einen Text, falls er denn gleich ist wie einer dieser Zahlen so den Wert holen: 

function getValueOfString(eingabe){
let wert = zahlen[eingabe];
if(wert)
 return wert;
else
 return null;
}

Und das wars auch schon. Man kann in Javascript auf Attribute eines Objekts zugreifen in dem man diesen Zugriff verwendet objekt[attributName]. Das nutzen wir in dem Fall aus um den Wert zu bekommen. Die Abfrage am Ende ist lediglich da um bei falsch eingegebener Zahl sicher zu sein das null zurückgegeben wird statt undefined. Stell ruhig fragen wenn du welche hast :)

Kommentar von Fragantherr ,

Danke dafür! Wie binde ich denn die function in meine Textabfrage ein? (Bis jetzt nur mit ParseInt, was ja hier nicht mehr funktionieren kann)

Kommentar von Berny96 ,

Ich würde ca so vorgehen dass man zuerst versucht die Funktion anzuwenden und danach parseInt, wenn beides nichts zurückliefert hat der Nutzer etwas falsches eingegeben. Also ca so:

let eingegebeneZahl = getValueOfString(eingabe);
if (!eingegebeneZahl)
  eingegebeneZahl = parseInt(eingabe);
if(eingebeneZahl)
 //Richtige Eingabe
else
 //Fehlerhafte Eingabe



Antwort
von polygamma, 34

Interpretiere die Eingabe als String und führe einen Stringvergleich durch.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten