Как проверить, состоит ли строка только цифр?проверить, является ли строка номером
ответ
Например, используя re модуль:
1> re:run("1234a56", "^[0-9]*$").
nomatch
2> re:run("123456", "^[0-9]*$").
{match,[{0,6}]}
Или, используя список понимание:
[Char || Char <- String, Char < $0 orelse Char > $9] == [].
Обратите внимание, что оба решения будут рассматривать пустой список допустимых входных.
Использовать regular expression.
Один из способов - преобразовать его в целое число, и если это не удастся, вы узнаете, что это не целое число.
is_integer(S) ->
try
_ = list_to_integer(S),
true
catch error:badarg ->
false
end.
Или вы можете просто проверить все цифры, но вы должны проверить края случае пустого списка:
is_integer("") ->
false;
is_integer(S) ->
lists:all(fun (D) -> D >= $0 andalso D =< $9 end, S).
кажется сложным ... – Bertaud
Что это будет делать для ввода «9999999999999999999999999999»? –
Для ввода «999999999999999999999999999999» первое решение создало бы большую –
not lists:any(fun(C)->C < $0 or C > $9 end, YourString).
В производстве, хотя, я бы согласился с list_to_integer, так как он, вероятно, лучше оптимизирован. Я не уверен, существуют ли разные характеристики обхода «любой» и «все» - вы можете реализовать каждый из них в терминах другого, но они, вероятно, оба реализованы в C.
Я собираюсь идти вперед и вниз для себя написания «не перечисляет никакой забавы» о функциональном языке: D –
- 1. Проверьте, является ли строка номером
- 2. Как проверить, является ли строка текстовым или научным номером?
- 3. Как проверить, является ли строка (очень большим) номером?
- 4. Монго. как проверить, является ли поле номером
- 5. Как проверить, является ли число цветным номером?
- 6. Как проверить, является ли идентификатор номером?
- 7. Как проверить, является ли строка не числом
- 8. Как проверить, что строка, заканчивающаяся номером, НЕ является датой?
- 9. Как узнать, является ли строка номером в научной нотации?
- 10. Как проверить, является ли значение номером в лаке?
- 11. python проверить, заканчивается ли строка с номером в допустимом диапазоне
- 12. IOS: проверить, является ли строка пустой строкой
- 13. PHP проверить, является ли строка SQL timestamp
- 14. Как проверить, является ли строка положительным целым?
- 15. Как проверить, является ли строка .inarray
- 16. проверить, является ли многобайтовая строка в PHP
- 17. Как проверить, является ли строка или json
- 18. Как проверить, является ли строка подмножеством data.frame?
- 19. Как проверить, является ли строка натуральным числом?
- 20. Функция, чтобы проверить, является ли строка датой
- 21. Как проверить, является ли строка датой?
- 22. Rails: можно проверить, является ли строка двоичной?
- 23. проверить, является ли строка частью массива - javascript
- 24. Как проверить, является ли строка тегом привязки?
- 25. Как проверить, является ли строка пространством имен
- 26. Как проверить, является ли строка int?
- 27. PHP: Простой, Проверить, является ли строка шестнадцатеричной?
- 28. проверить, является ли строка палиндром или нет
- 29. проверить, является ли следующая строка дубликат
- 30. Как проверить, является ли строка допустимым поплавком?
re: match (S, "[0-9]) как это? – Bertaud
Я не тестировал его, но я предполагаю, что использование регулярного выражения будет медленнее, чем использование list_to_integer/1. – Tim
Я бы предпочел не есть логика, которая зависит от того, чтобы выбрасывать исключение. Звучит как микро-оптимизация для меня. – duffymo