Walidacja integerów w stringu

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

1

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

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?

0

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

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.

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:)

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.

0

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

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.

0

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

0

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

0
Wibowit napisał(a):

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

Tak. "005" nie jest malformed (według mojej libki przynajmniej).

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