Проверить является ли строка числом

1. Lyba1990 19.01.24 11:03 Сейчас в теме
Помогите разобраться, только начала изучать1с. Не пойму, почему, если ставить точку в конце Строка, к примеру Строка = "123а21ф."; - система говорить, что это число, по отладчику смотрела, в коде падает в ложь, но все равно выдает, что это число.


Строка = "123а21ф";
ОбрезатьСимволы = СокрЛП(Строка);
ДлинаСтроки = СтрДлина(Строка);
ПроверяемСНомера = 1;
Для ПП=ПроверяемСНомера по ДлинаСтроки Цикл
	ТекСимвол = Сред(Строка,ПП,1);
	Если СтрНайти("0123456789.",ТекСимвол)= 0 Тогда 
		ТекСимвол= Ложь;
	Иначе
		ТекСимвол = Истина;
		
	КонецЕсли;
		
КонецЦикла;	 
Если ТекСимвол = Ложь Тогда
Сообщить("" + Строка + "-" + " Числом не является");
Иначе 
Сообщить("" + Строка + "-" + " Числом является");
КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 76 19.01.24 11:27 Сейчас в теме
(1) Всместо всего вашего кода, давно уже можно сделать:

ЭтоЧисло = СтрСоединить(СтрРазделить(Строка, "1234567890")) = "";
7. Said-We 19.01.24 12:29 Сейчас в теме
(3)
ЭтоЧисло = СтрСоединить(СтрРазделить(Строка, "1234567890")) = "";
Или так с точкой и третьим параметром, что бы пустые строки сразу отсеять
ЭтоЧисло = СтрСоединить(СтрРазделить(Строка, ".1234567890", ЛОЖЬ)) = "";
Но нужна проверка того, что точка только одна в строке. Иначе 111.222.333.444 тоже число. :-)
8. Westonline82 19.01.24 12:34 Сейчас в теме
9. nomad_irk 76 19.01.24 12:35 Сейчас в теме
(7) Указанный мной вариант применим только в том случае, если число - целое неотрицательное. С дробными числами как минимум два нюанса: разделитель дробной части, может быть "," и "."
10. Westonline82 19.01.24 12:38 Сейчас в теме
Попытка
	пЧисло = Число(СокрЛП(Строка));
	ЭтоЧисло = Истина;
Исключение
	ЭтоЧисло = Ложь;
КонецПопытки;
(9)
4. user1880116 19.01.24 11:34 Сейчас в теме
Проверить является ли строка числом

ЧТО, ОПЯТЬ???
5. user1880116 19.01.24 11:37 Сейчас в теме
(1)
Строка = "123а21ф."

Следующие примеры: "45.89" - является числом, "47 руб" - не является числом.
2. user2033930 19.01.24 11:14 Сейчас в теме
Как только нашла Ложь - надо прерывать цикл (дальше проверять уже не имеет смысла). В противном случае у тебя результат будет только по последнему символу.
6. Lyba1990 19.01.24 11:43 Сейчас в теме
11. Said-We 19.01.24 12:41 Сейчас в теме
(9) Чаще нужно не узнать число или нет, а сразу получить число. Поэтому обычно через попытку и в исключение ноль.
12. nomad_irk 76 19.01.24 12:42 Сейчас в теме
(11)Судя по описанию, ТС не нужно значение, ему нужно именно определить, является ли строковое значение числом.
13. Said-We 19.01.24 12:46 Сейчас в теме
Пятница.
0хFD09h - является числом или нет :-)
(12)
(1)
14. user1880116 19.01.24 13:49 Сейчас в теме
(13)
числом
Не является. Ты или префикс убери, или постфикс. Трусы там, крестик...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот