Преобразование строки в число

RomanVG 122 1 6 1

Не вызывает исключение

// функция преобразует строку в число, примеры:
// 315 руб. = 315
// 1 007,30 м2 (квадратный метр) = 1007,3
// -12.5% = -12,5
// ,05 = 0,05
// пустая строка или пробелы = 0
Функция грв_СтрокаВЧисло(Знач СтрокаЧисло) Экспорт
	
	Результат = "";
	Для Индекс = 1 По СтрДлина(СтрокаЧисло) Цикл
		Символ = Сред(СтрокаЧисло, Индекс, 1);
		КодСимвола = КодСимвола(Символ);
		Если ((КодСимвола >= 48 И КодСимвола <= 57) Или (Символ = "-" И Индекс = 1) Или (Символ = ",") Или (Символ = ".") Или (Символ = " ") Или (КодСимвола = 160)) Тогда
			Если КодСимвола <> 32 И КодСимвола <> 160 Тогда
				Результат = Результат + Символ;
			КонецЕсли; 
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Результат = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Результат);
	
	Возврат Результат;
	
КонецФункции
3

Комментарии

Сахипов Данил
#1, 29 июня 2022 14:13

Все это можно сделать двумя строками:

		ОписаниеТипа = Новый ОписаниеТипов("Число");
		Результат = ОписаниеТипа.ПривестиЗначение(СтрокаЧисло);	


RomanVG
#2, 30 июня 2022 08:29

(1) Сахипов Данил, к сожалению нельзя, в первых 3 приведенных примерах результатом этих 2 строк будет 0
// 315 руб. = 315
// 1 007,30 м2 (квадратный метр) = 1007,3
// -12.5% = -12,5


Сахипов Данил
#3, 12 августа 2022 07:30

(2) RomanVG, Ну тогда так:
Результат = XMLЗначение(Тип("Число"), СтрокаЧисло);


См. также

Преобразование строки в число

ПреобразоватьЧислоВРимскуюНотацию (БСП)

ПреобразоватьЧислоВАрабскуюНотацию (БСП)

Функции преобразования ЗаписьJSON

СтрокаВЧисло (БСП)

Получить число из строки

СтрокаСЧисломДляЛюбогоЯзыка (БСП)

Преобразовать строку в число

Строка в дату по форматной строке

Модератору