• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Проверка тестового поля на наличие только цифр

  • Автор темы Xalet
  • Дата начала
X

Xalet

Есть поле типа намбер. Мне нужно чтобы пользователь мог вводить числа начинающиеся с нуля, как пример 0000124. Ноутсы все нули отбрасывают. Можно ли как-то задать возможность вводить именно с нулями? Или надо с текстом извращаться?
 
O

Omh

000124 - Какой же это номер?
Это как раз текст :)
 
X

Xalet

Да мне собственно форматить и не нужно. Мне нужно вводить и проверять... В общем разные у нас с АйБиЭмом представления о номерах... Текст так текст...

Всем спасибо за ответы.
 
O

Omh

Проверить можно с помощью оператора Like на QuerySave например.
 
X

Xalet

@ToNumber(value) Почему эта функция работает так же, как и @TextToNumber(value).
Т.е. @ToNumber(555рр55) вернет 555, а не ошибку, как указано в хелпе?
 
O

Omh

@ToNumber(pp55555) должно вернуть ошибку, а в твоём случае он заескейпит символы.
Кажись так было.
 
H

hosm

Может, попытаться сделать проверки на цифры с помощью @Matches, раз уж пошли в дело собаки?
 
X

Xalet

Проверку то я сделал... Есть @IsNumber на собаках, хоть я на ЛС все и переписал.
Но почему @ToNumber работает именно так остается загадкой.
 
H

hosm

Если меня не подводит склероз, @IsNumber вернет @true только для числа.
Текст, содержащий число как строку, он так не обработает.
 
X

Xalet

Если меня не подводит склероз, @IsNumber вернет @true только для числа.
Текст, содержащий число как строку, он так не обработает.
Очень странно. Потому как аналог ЛС Isnumeric работает и со стрингами. Тем хуже любителям собак.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
126
Visual Basic:
%REM
    Function IsDigital
    Description: проверяет, являются ли все элементы переданной строки цифрами
%END REM
Function IsDigital(sValue As String) As Boolean
    IsDigital = (sValue Like UString(Len(sValue), "#"))
End Function
 
  • Нравится
Реакции: lmike и alexas1

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 950
609
BIT
265
Visual Basic:
%REM
    Function IsDigital
    Description: проверяет, являются ли все элементы переданной строки цифрами
%END REM
Function IsDigital(sValue As String) As Boolean
    IsDigital = (sValue Like UString(Len(sValue), "#"))
End Function
два вопроса:
- почему возникло желание поднять тему :)
- почему ЛС, когда тему а про собаки ;)

ЗЫЖ я даже не задумывался про такое применение юникодовых ф-ций
 

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
126
Самому понадобилось, поискал в инете - нет, зашёл сюда, перелопатил - нет. Написал сам, ну и запостил сюда. Всё просто :)
А на LS... Выше камрад Omh писал про анализ на QuerySave, а это LS, и как раз мой случай (номера телефонов). Просто надо было куда-то всобачить этот код, а по теме подходит :)
Да и меня сейчас особо не парит выкладывать код (если за него не стыдно))) - не жалко, т.к. уже не в софтверной конторе работаю.

Ну ещё, походу, несколько похожих сообщений и тем перетасовал и удалил ненужные.

ЗЫЖ: а я давно заметил, и иногда использую как Repeat.
 
Последнее редактирование:
  • Нравится
Реакции: lmike

garrick

Lotus Team
26.10.2009
1 352
151
BIT
212
А чем вам штатные функции не угодили?

+
 

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
126
А чем вам штатные функции не угодили?
+
, - здесь выше уже было писано, возвращает 1 только для числа, а не для текста, содержащего числа;
, -здесь выше уже было писано, молча перегоняет в число, отбрасывая всё, после первого символа, не являющегося цифрой.
- возвращает True, если в тексте содержатся "+", "-", "E" и десятичный разделитель, установленный в системе.
Кроме того @-формулы требуют Evaluate, а зачем он, если мне нужен LS?
 
  • Нравится
Реакции: alexas1
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!