Имя: Пароль:
1C
 
Удалить нули в строке
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) Кошмар, вызывать конструктор строки несколько раз!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.