Возникла ситуация, когда необходимо преобразовать в число любую строку из 1с или другого com объекта (excel,word и т.п.) при чем строки могут быть разные и содержать разные данные, функция написана, что бы быстро преобразовать в число.
Функция ВернутьЧисло(Знач ВхСтрока)
Если ТипЗнч(ВхСтрока) = Тип("Число") Тогда
Возврат ВхСтрока;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ВхСтрока) Тогда
Возврат 0;
КонецЕсли;
Если ТипЗнч(ВхСтрока) <> Тип("Строка") Тогда
Возврат 0;
КонецЕсли;
ВхСтрока = СтрЗаменить(ВхСтрока, ",", ".");
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Ложь; // истина — игнорировать регистр строки при поиске
RegExp.Pattern = "[^0-9\.-]";
Реплайс = RegExp.Replace(ВхСтрока,"");
Если пустаяСтрока(Реплайс) тогда
возврат 0;
КонецЕсли;
RegExp.Pattern = "[+-]?\d+\.?\d*";
Matches = RegExp.Execute(Реплайс);
Если Matches.Count>0 тогда
Возврат Число( Matches.Item(0).Value);
КонецЕсли;
Возврат 0;
КонецФункции
No comments:
Post a Comment