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

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

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

В цикле сравниваем символы с цифра не цифра и смотря какое состояние пишем куда нуна и/или меняем состояние.
10 Garykom
 
гуру
18.03.19
13:47
(9)+ Вот когда вручную кодом написана и понята реализация КА, можно уже переходить к высокоуровневым готовым реализациям типа RegExp (регулярным выражениям)
11 Fish
 
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 конечно
15 Garykom
 
гуру
18.03.19
14:55
(12) >Плохая идея символы перебирать.

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