|
Удалить нули в строке | ☑ | ||
---|---|---|---|---|
0
13Дима13
29.12.14
✎
18:38
|
добрый вечер. Есть строка вида 00000453099, нужно удалить нули вначале строки. Количество нулей неизвестно, кто какой алгоритм подскажет?
|
|||
1
Casey1984
29.12.14
✎
18:41
|
мда) СтрЗаменить ?
|
|||
2
Кир Пластелинин
29.12.14
✎
18:41
|
в типовых же был механизм. что то аля "ВывестиНомерДокументаДляПечати". Он как раз и обрезал нули в начале.
|
|||
3
Мимохожий Однако
29.12.14
✎
18:41
|
Обходи циклом строку с начала, пока есть ноль и отрежь в тот момент, когда в начале останется не ноль.
|
|||
4
Кир Пластелинин
29.12.14
✎
18:41
|
(1) нули могут быть в середине искомого номера
|
|||
5
13Дима13
29.12.14
✎
18:42
|
(1) нули в середине тоже заменятся
|
|||
6
Casey1984
29.12.14
✎
18:47
|
Ну тады цыклами)
|
|||
7
DexterMorgan
29.12.14
✎
18:49
|
Функция УдалитьПовторяющиесяСимволы(Знач Строка, Знач Символ, Знач Режим = "Слева") Экспорт
Если ВРег(Режим) = "СЛЕВА" Тогда Пока Лев(Строка, 1)= Символ Цикл Строка = Сред(Строка, 2); КонецЦикла; ИначеЕсли ВРег(Режим) = "СПРАВА" Тогда Пока Прав(Строка, 1)= Символ Цикл Строка = Лев(Строка, СтрДлина(Строка) - 1); КонецЦикла; КонецЕсли; Возврат Строка; КонецФункции |
|||
8
Casey1984
29.12.14
✎
18:49
|
как-то так ? )
Пока Лев(Стр, 1) = "0" Цикл Стр = Прав(Стр, СтрДлина(Стр) - 1); КонецЦикла; |
|||
9
DexterMorgan
29.12.14
✎
18:50
|
Йо, все бухают, а ты тут программишь)
|
|||
10
DexterMorgan
29.12.14
✎
18:50
|
(8) В типовых все сделано за вас, меьсе
|
|||
11
Casey1984
29.12.14
✎
18:51
|
(10) Не мешай - я изобрел велосипед! ;)
|
|||
12
0xFFFFFF
29.12.14
✎
18:52
|
(0) Число("1"+Стр)- Pow(10, СтрДлина(Стр)) - не проверял...
|
|||
13
13Дима13
29.12.14
✎
18:53
|
(8) спасибо!
|
|||
14
Casey1984
29.12.14
✎
18:53
|
(12) ого!)
|
|||
15
DexterMorgan
29.12.14
✎
18:55
|
(13) неблагодарный, в (7) уже все было
|
|||
16
13Дима13
29.12.14
✎
18:58
|
(15) в 8-ом короче)
|
|||
17
0xFFFFFF
29.12.14
✎
18:59
|
(15) циклы зло. Зри в корень :) (12)
|
|||
18
DexterMorgan
29.12.14
✎
19:00
|
(16) И че? в (7) универсально, любые символы, справа/слева, а вы все авнокодите заплатками по случаю
|
|||
19
Casey1984
29.12.14
✎
19:00
|
(17) А может тогда Стр = Строка(Число(Стр)) ?
|
|||
20
DexterMorgan
29.12.14
✎
19:00
|
(17) я ваще тут бухаю, нафиг твой корень =)
|
|||
21
13Дима13
29.12.14
✎
19:03
|
(19) в номере могут встречаться буквы, точки...
|
|||
22
Мимохожий Однако
29.12.14
✎
19:04
|
(21)Прикольное уточнение ТЗ к к 21 посту. Ждём продолжения...
|
|||
23
Casey1984
29.12.14
✎
19:04
|
(21) эй - этого не было в условии, я так не играю (
|
|||
24
DS
29.12.14
✎
19:04
|
(21) Прикольно наблюдать сей диалог. Чем тогда поможет (12), если "могут встречаться буквы, точки..."?
|
|||
25
13Дима13
29.12.14
✎
19:05
|
(22) продолжение: обратную функцию, есть строка, например 475834, нужно сделать 0000475834.
|
|||
26
mehfk
29.12.14
✎
19:08
|
(0) Для тебя лучший алгоритм: Бери больше, кидай дальше, пока летит - отдыхаешь!
|
|||
27
Casey1984
29.12.14
✎
19:08
|
(25) не буду делать.
|
|||
28
koreav
29.12.14
✎
19:08
|
строка(число("00000453099"))
|
|||
29
DS
29.12.14
✎
19:08
|
(25) + Можно усложнить условием "количество нулей неизвестно".
|
|||
30
Мимохожий Однако
29.12.14
✎
19:08
|
(25)Открой типовую конфигурацию или демо БСП. Там все эти функции есть. Ждёшь, когда другие оттуда цитат надёргают?
|
|||
31
13Дима13
29.12.14
✎
19:09
|
(29) количество нулей от 0 до 10, максимальная длина строки 10
|
|||
32
DS
29.12.14
✎
19:10
|
(31) Это был сарказм если чо...
|
|||
33
Umga2002
29.12.14
✎
19:34
|
Где то видел
Стр=Прав("000000000000000"+Стр,11); |
|||
34
WebberNSK
29.12.14
✎
19:49
|
(0) Вы на чем разрабатываете?
В БСП есть процедуры, которые это делают + во всех типовых "старой" линейки есть такие процедуры |
|||
35
b_ru
29.12.14
✎
19:54
|
(7)(8) кошмар, вызывать констуктор строки несколько раз
(28) лидирующие нули все равно могут остаться (0) Если строка состоит из одних только цифр как в примере, можно преобразовать в число и обратно в строку. а правильное решение: й = 1; Пока Сред(стр,й,1) = "0" Цикл й = й + 1; КонецЦикла; Стр = Сред(стр, й); |
|||
36
b_ru
29.12.14
✎
19:55
|
к (35): забыл проверку на конец строки
Для й = 1 по СтрДлина(Стр) Цикл Если Сред(стр,й,1) = "0" Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
37
Casey1984
29.12.14
✎
20:00
|
(35)(36) Кошмар, вызывать конструктор строки несколько раз!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |