|
Как удалить из строки все символы кроме цифр? | ☑ | ||
---|---|---|---|---|
0
meegor
17.02.14
✎
12:24
|
Добрый день, возник вот такой срочно вопрос, спасибо!
|
|||
1
Wobland
17.02.14
✎
12:24
|
перебором
|
|||
2
1Сергей
17.02.14
✎
12:25
|
можно без цикла
|
|||
3
Wobland
17.02.14
✎
12:25
|
(2) регэксп?
|
|||
4
1Сергей
17.02.14
✎
12:27
|
(3)
Функция ТолькоЦифры(Строка) Экспорт Если СтрДлина(Строка) = 0 Тогда Возврат ""; ИначеЕсли (Строка>="0") И (Строка<="9") Тогда Возврат Лев(Строка, 1) + ТолькоЦифры(Сред(Строка, 2)); Иначе Возврат ТолькоЦифры(Сред(Строка, 2)); КонецЕсли; КонецФункции |
|||
5
1Сергей
17.02.14
✎
12:31
|
*
//ИначеЕсли (Строка>="0") И (Строка<="9") Тогда ИначеЕсли (Строка>="0") И (Лев(Строка,1)<="9") Тогда |
|||
6
1Сергей
17.02.14
✎
12:31
|
писал на коленке
|
|||
7
Wobland
17.02.14
✎
12:32
|
(Лев(Строка,1)<="9")
во. чувствую, что-то не сходится ;) |
|||
8
alexei366
17.02.14
✎
12:33
|
(4) Жесть.
Мож 1 цикл по всем символам, и смотреть на результат функции "КодСимвола()" (точно не помню там какие коды для 0-9), ну и если код попадает в диапазон кодов цифр то добавлять в результат, а в конце результат на "Возврат" |
|||
9
1Сергей
17.02.14
✎
12:33
|
абажаю рекурсию. хотя, она тут нафиг не нужна :)
|
|||
10
1Сергей
17.02.14
✎
12:34
|
(8) см (2),(3)
|
|||
11
1Сергей
17.02.14
✎
12:35
|
а коды 48 и 57. Это я помню, но так нагляднее
|
|||
12
alexei366
17.02.14
✎
12:36
|
(10) Да лучше уж цикл чем стек вызовов функций.
|
|||
13
badboychik
17.02.14
✎
12:37
|
СтрокаИтог = "";
цикл по символам { СтрокаИтог = СтрокаИтог +?(Найти("0123456789",Символ),Символ,""); } |
|||
14
1Сергей
17.02.14
✎
12:37
|
(13) это ты с сями попутал
|
|||
15
Wobland
17.02.14
✎
12:37
|
Для й=0 По 256 Цикл
Если й<=48 и й>=57 СтрЗаменить(стр, Символ(й), ""); |
|||
16
badboychik
17.02.14
✎
12:38
|
(14) лень писать валидный 1С, переводи с псевдокода
|
|||
17
Torquader
17.02.14
✎
12:38
|
Функция УбратьВсёКроме(пстрДанные,пстрДопустимые)
лчДл=СтрДлина(пстрДанные); лстр=""; Для лч=1 По лчДл Цикл лстрСимв=Сред(пстрДанные,лч,1); Если Найти(пстрДопустимые,лстрСимв)>0 Тогд лстр=лстр+лстрСимв; КонецЕсли; КонецЦикла; Возврат лстр; КонецФункции |
|||
18
1Сергей
17.02.14
✎
12:39
|
(15) конкурс на самый медленный код считается открытым? :)
|
|||
19
Wobland
17.02.14
✎
12:40
|
(18) ага. 256 - это я недобрал
|
|||
20
Torquader
17.02.14
✎
12:41
|
(19) А у нас символы не Unicode разве ?
|
|||
21
Wobland
17.02.14
✎
12:41
|
(20) вово
|
|||
22
alexei366
17.02.14
✎
12:41
|
Функция ТолькоЦифры(Строка)
Длинна = СтрДлина(Строка); Итог = ""; Для Инд = 1 По Длинна Цикл Символ = Сред(Строка,Инд,1); КодСимвола = КодСимвола(Символ); Если КодСимвола > 47 И КодСимвола < 58 Тогда Итог = Итог+Символ; КонецЕсли; КонецЦикла; Возврат Итог; КонецФункции |
|||
23
kosts
17.02.14
✎
12:42
|
|
|||
24
Torquader
17.02.14
✎
12:42
|
(21) На самом деле, если длина строки более 64Кб, то метод не очень-то и медленным покажется.
|
|||
25
Wobland
17.02.14
✎
12:43
|
(23) не факт, что это - самый медленный вариант. незачёт
|
|||
26
badboychik
17.02.14
✎
12:43
|
Й=СтрДлина(ИсхСтрока);
У=1; _=""; Для Х = У по Й Цикл ъ=ИсхСтрока[Х]; _=_+?(Найти(ъ,ИсхСтрока)>0,ъ,""); КонецЦикла; |
|||
27
Torquader
17.02.14
✎
12:43
|
(23) Надо чтобы пользователю, который вместо цифр ввёл то, чего не должно быть, показывалась картинка с результатом, которого тоже быть не должно - тогда будут думать.
|
|||
28
badboychik
17.02.14
✎
12:44
|
(14) так норм?
|
|||
29
Серго62
17.02.14
✎
12:45
|
Может так?
СтрЗаменить("Строка1234567890", "0", "") ... СтрЗаменить("Строка1234567890", "9", "") |
|||
30
1Сергей
17.02.14
✎
12:45
|
(26) подогнал под ответ.
Переменная У там в наху? не нужна |
|||
31
Wobland
17.02.14
✎
12:46
|
(27) 25й кадр? бойцовский клуб вспоминаетяс
|
|||
32
badboychik
17.02.14
✎
12:49
|
а вообще самый правильный способ
re = new Regexp('\D'); re.replace(str,""); |
|||
33
1Сергей
17.02.14
✎
12:50
|
Прав (27).
У нас, если не проставлены коэффициенты у ЕИ товаров, то количество считается как 9999999999999999999 и этому есть логичное объяснение. Когда Коэф = 0 у одной из позиций, то это не сразу видно в большой портянке документа, при печати, итоговая сумма похожа на правду. Но, когда итоговая сумма = 99999999999999999, то чел сразу понимает, что в документе что-то не так |
|||
34
Адинэснег
17.02.14
✎
12:52
|
Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ИсхСтрока) Тогда
Предупреждение("Ху?!!1"); КонецЕсли; |
|||
35
kosts
17.02.14
✎
12:52
|
|
|||
36
Torquader
17.02.14
✎
12:52
|
(33) А машина это сама проверить и сказать пользователю не может ?
|
|||
37
1Сергей
17.02.14
✎
12:53
|
(36) нельзя
|
|||
38
1Сергей
17.02.14
✎
12:55
|
(35) агамс, теперь давай функцию ЭтоЧисло :)
|
|||
39
Torquader
17.02.14
✎
12:55
|
(37) Почему нельзя ?
|
|||
40
1Сергей
17.02.14
✎
12:56
|
(39) требование бизнеса.
|
|||
41
Torquader
17.02.14
✎
12:56
|
(40) Лучше один раз объяснить, почему так делать нехорошо, чем реализовывать бредовую идею.
|
|||
42
1Сергей
17.02.14
✎
12:57
|
(41) не ты ли в (27) предложил аналогичный вариант?
|
|||
43
Wobland
17.02.14
✎
12:57
|
а по-моему (33) имеет право на жизнь. изящненько так ;)
|
|||
44
Torquader
17.02.14
✎
12:58
|
(43) Ну, можно ещё и минус пририсовать - если в графе минус, то явно что-то в "консерватории исправить надо".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |