7
votes

Comment valider un personnage numérique dans Scala?

Mon application prend une chaîne comme celle-ci (-110,23, -111.9543633) J'ai besoin de valider / récupérer à l'intérieur du script Scala que la chaîne si elle est numérique ou non?


2 commentaires

Veuillez préciser si vous souhaitez convertir en int ou double ou plutôt pour vérifier si une chaîne peut être convertie en un type qui a un type Implicit numérique [_]


Supposons juste que mon contribution se présente comme "111" de sorte que son numéro numérique à je soulever un drapeau indiquant son numérique, ou même si l'entrée vient comme "-78", mais si mon entrée vient comme "111,67", j'ai besoin d'élever le drapeau comme décimal .


3 Réponses :


13
votes

considérer scala.util.try pour attraper des exceptions possibles dans la conversion d'une chaîne sur une valeur numérique, comme suit, xxx

à la facilité d'utilisation, considérez Cette implicite, xxx

par conséquent xxx


1 commentaires

Essayez de capturer pour une telle vérification est une perte de ressources, vous pouvez vérifier la chaîne directement.



0
votes

supposant que vous voulez non seulement convertir en utilisant essayer (x.toint) ou essayer (x.tofloat) mais veut réellement un validateur > qui prend un chaîne et retourner true iff la chaîne de la chaîne peut être converti en un A avec Preuve implicite: numérique [A] .

Alors je dirais: Afaik, Non Il n'est pas possible. Surtout, car numérique n'est pas scellé . C'est vous pouvez créer vos propres implémentations de numeric

types primitifs tels que int, long, flotteur, double peut être facilement extrait avec une expression régulière.


0 commentaires

0
votes

J'ai essayé cela et sa fin fonctionnant:

val S = "-1112.12" s.isnumeric && (S.Contains ('.') == Faux)


0 commentaires