Вход | Регистрация
 

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

Как из значения выделить число и убрать символы
Я
   falselight
 
16.03.19 - 05:44
Как из значения "1280руб.", выделить 1280.
Это цена, как получать числа из значения содержащего неизвестное количество символов?
 
 
   Mikhail Volkov
 
1 - 16.03.19 - 06:24
(0) Число()?
   yakutyan
 
2 - 16.03.19 - 13:31
   Cyberhawk
 
3 - 16.03.19 - 13:34
Надо еще и дробность учесть, и разделители разрядов
   AlvlSpb
 
4 - 16.03.19 - 21:47
(0) Я бы рекомендовал почитать про регулярные выражения. Проще чем с их помощью эту задачу не решить
   Garykom
 
5 - 16.03.19 - 21:56
Лучше скажите как это запросом сделать
   Garykom
 
6 - 16.03.19 - 21:57
Мне уже не смешно когда с подобными детскими вопросами лезут в базу к реальным данным.
   Сияющий в темноте
 
7 - 18.03.19 - 13:31
вопрос не совмем детский,особенно,когда будет 125руб.13коп.
и опять же,что мы ожидаем увидеть во входных данных-только суммы или еще что-то?
   Kigo_Kigo
 
8 - 18.03.19 - 13:43
(7) если это постоянные данные ХХХ руб. ХХ коп., ничто не мешает вырезать руб. и коп.
СтрокаПоиска = СтрЗаменить(СтрокаПоиска,"руб.","");
СтрокаПоиска = СтрЗаменить(СтрокаПоиска,"коп.","");
СтрокаПоиска  = Число(СтрокаПоиска );
   Garykom
 
9 - 18.03.19 - 13:46
(7) Совершенно детский даже с "125руб.13коп."

Потому что в одном цикле выбрать цифры из строки с учетом разделителей которые идут сразу после цифр не проблема.
Чтобы не потерялось 125.13 или 125,13 или 125=13

Цикл по строке с получением символов по одному.
Две переменные, если надо с копейками или всего одна если только одно число.
Ну и реализация простейшего конечного автомата с несколькими состояниями, для чего еще одна переменная.

В цикле сравниваем символы с цифра не цифра и смотря какое состояние пишем куда нуна и/или меняем состояние.
   Garykom
 
10 - 18.03.19 - 13:47
(9)+ Вот когда вручную кодом написана и понята реализация КА, можно уже переходить к высокоуровневым готовым реализациям типа RegExp (регулярным выражениям)
   Fish
 
11 - 18.03.19 - 14:14
(6) "когда с подобными детскими вопросами лезут в базу к реальным данным" - Это же ЛивингСтар. Раз за столько лет его не уволили, то значит, особо деструктивного он не совершает :)
   Вася Теркин
 
12 - 18.03.19 - 14:45
Функция ОставитьТолькоЧисла(Чтото)
Маска = СтрЗаменить(Чтото,"0",Символы.ПС);
Маска = СтрЗаменить(Маска,"1",Символы.ПС);
Маска = СтрЗаменить(Маска,"2",Символы.ПС);
Маска = СтрЗаменить(Маска,"3",Символы.ПС);
Маска = СтрЗаменить(Маска,"4",Символы.ПС);
Маска = СтрЗаменить(Маска,"5",Символы.ПС);
Маска = СтрЗаменить(Маска,"6",Символы.ПС);
Маска = СтрЗаменить(Маска,"7",Символы.ПС);
Маска = СтрЗаменить(Маска,"8",Символы.ПС);
Маска = СтрЗаменить(Маска,"9",Символы.ПС);
Маска = СтрЗаменить(Маска,".",Символы.ПС);
ТоЧтоНадо = Чтото;
А дальше все строки Маски перебираешь и в цикле и 
ТоЧтоНадо = СтрЗаменить(ТоЧтоНадо, СтрокаМаски,Символы.ПС);

Как все Маски повырезаешь останется многострочное ТоЧтоНадо 
Каждая значимая строка будет отдельным числом Decimal
(9) Плохая идея символы перебирать.
   Вася Теркин
 
13 - 18.03.19 - 14:45
Маска = СтрЗаменить(Маска,".",Символы.ПС);
лишний если числа целые
   Вася Теркин
 
14 - 18.03.19 - 14:47
Decimal - integer конечно
   Garykom
 
15 - 18.03.19 - 14:55
(12) >Плохая идея символы перебирать.

Ты понимаешь что такое сложность алгоритма?
Понимаешь что я предложил один цикл и условия.
А у тебя в каждом "СтрЗаменить" отдельный новый цикл ))

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.