helpf.pro
Регистрация
 +2 
Распечатать

Как узнать является ли строка числом?

Код 1C v 7.x
  
// Если передено число - то 1, иначе 0
Функция ЭтоЧисло(Знач ТекСтр)
ТекСтр = СокрЛП(ТекСтр);
ТекСтр = СтрЗаменить(ТекСтр,"0","9");

Если (СтрДлина(Число(ТекСтр)) <> СтрДлина(ТекСтр))
или ((СтрДлина(ТекСтр) = 1) и (Найти("0123456789",ТекСтр) = 0)) Тогда
Возврат 0;
КонецЕсли;

Возврат 1;
КонецФункции


Код 1C v 8.х
 
// Если передено число - то истина, иначе ложь
Функция ЯвляетсяЧислом(Значение) Экспорт
Если ТипЗнч(Значение) = Тип("Число") Тогда
Возврат Истина
Иначе
Если ТипЗнч(Значение) = Тип("Строка") Тогда
Если Значение = "" Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли;

Попытка
Р = Число(Значение);
Исключение
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецЕсли;
КонецФункции
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 74818
 +2 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче
COM-подключение к базе 7.7 из .NET, .NET Core 2
Инсталяция: dotnet add package sabatex.V1C77 или добавить через NUGET пакет sabatex.V1C77. Добавить пространство имен: using sabatex.V1C77; пример использованя: ---C# static void Main(string args) { // создаем строку соединен
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Посмотреть все результаты поиска похожих
Комментарии
mybracho
03.09.2020 13:45Комментарий: 2
mybracho

Функция для 1с 8 ЯвляетсяЧислом(Значение)

работает не верно. 

Если передать туда "-", то в ответ получаешь ИСТИНА

kuzyara
07.08.2017 06:37Комментарий: 1
kuzyara

ОбщийМодуль.СтроковыеФункцииКлиентСервер

Код 1C v 8.х
 // Преобразует исходную строку в число без вызова исключений.
//
// Параметры:
//   ИсходнаяСтрока - Строка - Строка, которую необходимо привести к числу.
//
// Возвращаемое значение:
//   Число - Полученное число.
//   Неопределено - Если строка не является числом.
//
Функция СтрокаВЧисло(Знач ИсходнаяСтрока) Экспорт
ИсходнаяСтрока = СокрЛП(ИсходнаяСтрока);
Результат = 0;
ЗнаковПослеЗапятой = -1;
ЗнакОтрицательный = Ложь;
Длина = СтрДлина(ИсходнаяСтрока);
Для НомерСимвола = 1 По Длина Цикл
КодСимвола = КодСимвола(ИсходнаяСтрока, НомерСимвола);
Если КодСимвола = 32 Или КодСимвола = 160 Тогда // Пробел или неразрывный пробел.
// Пропуск (действие не требуется).
ИначеЕсли КодСимвола = 45 Или КодСимвола = 40 Тогда // Минус или открывающая скобка.
Если Результат <> 0 Тогда
Возврат Неопределено;
КонецЕсли;
ЗнакОтрицательный = Истина;
ИначеЕсли КодСимвола = 41 Тогда // Закрывающая скобка.
Если Не ЗнакОтрицательный Или Результат = 0 Тогда // Не было открывающей скобки или нет числа.
Возврат Неопределено;
КонецЕсли;
// Пропуск (действие не требуется).
ИначеЕсли КодСимвола = 44 Или КодСимвола = 46 Тогда // Запятая или точка.
Если ЗнаковПослеЗапятой <> -1 Тогда
Возврат Неопределено; // Разделитель уже был, следовательно это не число.
КонецЕсли;
ЗнаковПослеЗапятой = 0; // Запуск отсчета знаков после запятой.
ИначеЕсли КодСимвола > 47 И КодСимвола < 58 Тогда // Число.
Если ЗнаковПослеЗапятой <> -1 Тогда
ЗнаковПослеЗапятой = ЗнаковПослеЗапятой + 1;
КонецЕсли;
Число = КодСимвола - 48;
Результат = Результат * 10 + Число;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецЦикла;

Если ЗнаковПослеЗапятой > 0 Тогда
Результат = Результат / Pow(10, ЗнаковПослеЗапятой);
КонецЕсли;
Если ЗнакОтрицательный Тогда
Результат = -Результат;
КонецЕсли;

Возврат Результат;
КонецФункции
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.