![]() |
![]() |
![]() |
|
Убрать нули слева | ☑ | ||
---|---|---|---|---|
0
Глупый дятел
20.05.09
✎
15:09
|
Есть ли стандартная функция, отсекающая в строке нули слева? Или только обработку писать нужно?
|
|||
1
Mitriy
20.05.09
✎
15:10
|
Число
|
|||
2
Aswed
20.05.09
✎
15:11
|
Число(НужнаяСтрока)
|
|||
3
Ненавижу 1С
гуру
20.05.09
✎
15:11
|
(0) ага обработку, лучше подсистему или конфигурацию
Число("02"); |
|||
4
kmvbad
20.05.09
✎
15:17
|
Гы:) а в строке "0123абв" ?
|
|||
5
kmvbad
20.05.09
✎
15:18
|
Причем это скажем, справочник, и длина числовой части переменная?
|
|||
6
Aprobator
20.05.09
✎
15:19
|
это смотря какая строка - если 00000А то придется писать. Хотя делов - то 2 минуты.
|
|||
7
НЕА123
20.05.09
✎
15:21
|
не пятница, но все-таки...
СтрокаБезВедущихнулей = ВходСтрока; ПОка Найти(СтрокаБезВедущихнулей,"0") = 1 цикл СтрокаБезВедущихнулей = Сред(СтрокаБезВедущихнулей,2); КонецЦикла; |
|||
8
Fragster
гуру
20.05.09
✎
15:23
|
регэкспом заменить
"^0+" на "" |
|||
9
НЕА123
20.05.09
✎
15:23
|
(7)+ но, предложенное в (6) должно быть быстрее
|
|||
10
Aprobator
20.05.09
✎
15:24
|
(7) - о так пошустрее будет :)
|
|||
11
Aprobator
20.05.09
✎
15:25
|
(9)точно ?
|
|||
12
zbv
20.05.09
✎
15:26
|
замерьте.
|
|||
13
НЕА123
20.05.09
✎
15:28
|
(11)
если исходнаястрока длинная - то да. |
|||
14
Aprobator
20.05.09
✎
15:30
|
эх - ежа бы сюда. Он бы точно все рассудил :).
|
|||
15
Глупый дятел
20.05.09
✎
15:30
|
Спасибо, совет правильный. Еще такой вопрос всвязи с этим, есть форма списка документов, надо, чтобы номер документа там также без нулей был, как это проще сделать?
|
|||
16
ASU_Diamond
20.05.09
✎
15:33
|
(15) посмотри модуль печати документа, там и префикс убирается, и нули
|
|||
17
Aprobator
20.05.09
✎
15:33
|
можно попробовать при вводе строки устновить вывод текста и там подменять номер.
|
|||
18
НЕА123
20.05.09
✎
15:36
|
аналог (6)
стр = стрзаменить(ВходСтр,"0",Символы.ПС); для к = 1 по СтрЧислоСтрок(стр) Цикл если СтрДлина(стрполучитьстроку(стр,к))>0 тогда прервать; КОнецЕсли; КонецЦикла; стрбезнулей = стрзаменить(сред(стр,к),Символы.ПС,"0"); |
|||
19
НЕА123
20.05.09
✎
15:45
|
(6)
> ПроверяемыйСимвол = Сред(ИскомаяСтрока, НомерСимвола,1); > Если КодСимвола(ПроверяемыйСимвол) <> 48 Тогда достаточно Если КодСимвола(ПроверяемыйСимвол,ПроверяемыйСимвол) <> 48 Тогда +если уж на скорость, то ПозицияНеНуля можно выкинуть. в 1С переменная цикла при выходе из цикла определена (НомерСимвола). |
|||
20
НЕА123
20.05.09
✎
15:46
|
при выходе = после выхода
|
|||
21
hhhh
20.05.09
✎
16:02
|
можно еще
стр = СокрЛ(СтрЗаменить(ИскомаяСтрока, "0", " ")); Поз = СтрДлина(ИскомаяСтрока) - СтрДлина(стр) + 1; Если Поз > 1 Тогда СтрокаБезВедущихнулей = Сред(ИскомаяСтрока,Поз); Иначе СтрокаБезВедущихнулей = ИскомаяСтрока; КонецЕсли; |
|||
22
Aprobator
20.05.09
✎
16:03
|
о где Serg69? Он такое любит под попкорн.
|
|||
23
Aprobator
20.05.09
✎
16:07
|
Вот еще вариант (если посередине строки пробелов нет):
|
|||
24
hhhh
20.05.09
✎
17:31
|
(23) если были пробелы, не прокатит.
|
|||
25
Fragster
гуру
20.05.09
✎
17:33
|
СтрокаБезНулей = СтрЗаменить(СтрЗаменить(ИскомаяСтрока," ", "_"), "0", " ");
СтрокаБезНулей = СокрЛ(СтрокаБезНулей); Результат = Прав(ИсходнаяСтрока, СтрДлина(СтрБезНулей)); |
|||
26
Serg_1960
20.05.09
✎
17:41
|
(22) А? что? где? где попкорн?
//Убрать ведущие нули из строки Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ ВЫБОР КОГДА Т1.Стр ПОДОБНО ""0%"" ТОГДА ПОДСТРОКА(Т1.Стр, 2, 1000) ИНАЧЕ Т1.Стр КОНЕЦ КАК БезНулей |ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т2.Стр ПОДОБНО ""00%"" ТОГДА ПОДСТРОКА(Т2.Стр, 3, 1000) ИНАЧЕ Т2.Стр КОНЕЦ КАК Стр |ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т3.Стр ПОДОБНО ""0000%"" ТОГДА ПОДСТРОКА(Т3.Стр, 5, 1000) ИНАЧЕ Т3.Стр КОНЕЦ КАК Стр |ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т4.Стр ПОДОБНО ""00000000%"" ТОГДА ПОДСТРОКА(Т4.Стр, 9, 1000) ИНАЧЕ Т4.Стр КОНЕЦ КАК Стр |ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т5.Стр ПОДОБНО ""0000000000000000%"" ТОГДА ПОДСТРОКА(Т5.Стр, 17, 1000) ИНАЧЕ Т5.Стр КОНЕЦ КАК Стр |ИЗ (ВЫБРАТЬ ВЫБОР КОГДА &ЕстьНули ПОДОБНО ""00000000000000000000000000000000%"" ТОГДА ПОДСТРОКА(&ЕстьНули, 33, 1000) ИНАЧЕ &ЕстьНули КОНЕЦ КАК Стр) КАК Т5) КАК Т4) КАК Т3) КАК Т2) КАК Т1"; // Проверим? Фигня = "0000000000000000000000000000000000000000000000000000000000000000123"; Запрос.УстановитьПараметр("ЕстьНули", Фигня); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Сообщить("Было : " + Фигня + ", стало : " + Выборка.БезНулей); Возврат; |
|||
27
LamerSuper
20.05.09
✎
17:43
|
БезНулей=Строка(Число(СНулями))
Наверно |
|||
28
Fragster
гуру
20.05.09
✎
18:01
|
(27) а если номер «000123-бис»?
|
|||
29
ehrmann
20.05.09
✎
18:03
|
(28) тогда надо возвращатсо к пункту (4) и читать все заново
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |