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

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

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


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

		Попытка
			Р = Число(Значение);
		Исключение
			Возврат Ложь;
		КонецПопытки;
			Возврат Истина;
	КонецЕсли;
КонецФункции
   
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 76958
 +2 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 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, ЗнаковПослеЗапятой);
	КонецЕсли;
	Если ЗнакОтрицательный Тогда
		Результат = -Результат;
	КонецЕсли;
	
	Возврат Результат;
КонецФункции
   
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!