Walidacja integerów w stringu

Jakie wartości powinny być uznawane za poprawny integer?
Liczby z minusem (np. `-12`), same liczby (np. `4`), liczby z plusem (np. `+4`)
71%
71% [5]
Tylko liczby z minusem (np. `-12`) oraz same liczby (np. `4`)
29%
29% [2]
Odpowiedz Nowy wątek
2019-06-11 20:12
0

Piszę sobie funkcje isInt() oraz parseInt() które mają pomóc userom wyrażeń regularnych lepiej radzić sobie z liczbami. I tak się własnie zastanawiam co z tym znakiem + w stringu? Powinienem uznać +2 jako poprawnie sformatowany integer?

Oczywiście userzy biblioteki, jeśli nie będą chcieć użyć parseInt(), będą mogli po swojemu sparsować text() - więc proszę się tym nie kierować przy odpowiedzi :D


Pozostało 580 znaków

2019-06-11 20:21
1

Python, Ruby, Clojure, uznają +2 jako 2...


Pozostało 580 znaków

2019-06-11 20:23
0
lion137 napisał(a):

Python, Ruby, Clojure, uznają +2 jako 2...

Na tak, ale z konwersji "int to string" nigdy Ci nie wyjdzie +2, prawda?


Pozostało 580 znaków

2019-06-11 20:27
0

Nie wyjdzie, to oczywiste, ale z konwersji str(+2) wyjdzie '2'.


Pozostało 580 znaków

2019-06-11 20:30
0
lion137 napisał(a):

Nie wyjdzie, to oczywiste, ale z konwersji str(+2) wyjdzie '2'.

No właśnie pytanie czy powinno. Ktoś mógłby sobie wyobrazić że ten + tam jest przypadkiem, i powinno to nie zostać uznane za poprawny int.

Weź pod uwagę, że to by znaczyło że zapis dodatniego integer'a ma dwie redundantne formy: 13 oraz +13, podczas gdy ujemnego ma tylko jedną: -13. A ekstremalny przypadek ma trzy: -0, 0 oraz +0.


edytowany 1x, ostatnio: TomRiddle, 2019-06-11 20:30

Pozostało 580 znaków

2019-06-11 20:32
0

I właśnie z tym sobie powinien poradzić dobry parser; niech sobie user pisze 2 - +2, my ju ż tak zrobimy, że będzie dobrze:)


Pozostało 580 znaków

2019-06-11 20:46
0
lion137 napisał(a):

I właśnie z tym sobie powinien poradzić dobry parser; niech sobie user pisze 2 - +2, my ju ż tak zrobimy, że będzie dobrze:)

Są przypadki w których taki plus jest niedopuszczalny, np numery pesel, daty, numery telefonów, wzrost, id w tabelach, etc. Możliwości jest masa.


Pozostało 580 znaków

2019-06-11 20:48
0

Tak, w takim razie pytanie jest, co Chcesz zrobić? Co to ma być, jakaś knowledge base, jak wolframalpha, czy parser wyrażeń matematycznych?


Pozostało 580 znaków

2019-06-11 20:51
0
lion137 napisał(a):

Tak, w takim razie pytanie jest, co Chcesz zrobić? Co to ma być, jakaś knowledge base, jak wolframalpha, czy parser wyrażeń matematycznych?

Żadne z tych. Po prostu parser stringów na integer, który rzuca wyjątek dla malformed integer. Teraz się zastanawiam czy bardziej intuicyjne jest to czy + jest częścią inta czy nie.


Pozostało 580 znaków

2019-06-11 20:53
0

To ja mówię, że jest; popieram się językami które wymieniłem.


Pozostało 580 znaków

2019-06-11 22:26
0

A "005" jest poprawne czy nie? Bijekcji w tym przypadku nie osiągniesz. Nie sądzę by była niezbędna.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0