|
Как из значения выделить число и убрать символы | ☑ | ||
---|---|---|---|---|
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) >Плохая идея символы перебирать.
Ты понимаешь что такое сложность алгоритма? Понимаешь что я предложил один цикл и условия. А у тебя в каждом "СтрЗаменить" отдельный новый цикл )) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |