Имя: Пароль:
1C
Юмор
Разделить цифры в числе пробелами
0 vovnet
 
18.04.12
12:03
Необходимо разбить число пробелами.
Например 23543 должно быть как строка "2 3 5 4 3"
1 Нуф-Нуф
 
18.04.12
12:04
цикл
2 dk
 
18.04.12
12:06
погляди справку по Сред()
3 vovnet
 
18.04.12
12:37
Все сделал, вот код, может кому пригодится:

Функция РазбивкаЧисел(Разб)
   РазбСтрока = Строка(Разб);        // строковое представление числа
   ДлСтр = СтрДлина(РазбСтрока);    // количество цифр в числе  
   сч = 1;
   
   Для ном = 1 По ДлСтр Цикл
       ВозвратСтроки = ВозвратСтроки + Сред(РазбСтрока, сч, 1) + " ";  
       сч = сч + 1;
   КонецЦикла;
   
   Возврат ВозвратСтроки;
КонецФункции
4 Ыщъ
 
18.04.12
12:41
(3) Работает?
5 Wobland
 
18.04.12
12:42
(3) последний пробел тебе нужен?
6 Wobland
 
18.04.12
12:43
где ВозвратСтроки="" ?
7 Попытка1С
 
18.04.12
12:44
Срочно а базу знаний...
8 Ыщъ
 
18.04.12
12:46
Функция РазбавитьЧисло(Разб)
   РазбСтрока = Строка(Разб);
   ВозвратСтроки = "";
   Для ном = 1 По СтрДлина(РазбСтрока) Цикл
       ВозвратСтроки = ВозвратСтроки + Сред(РазбСтрока, ном, 1) + " ";  
   КонецЦикла;
   Возврат СокрП(ВозвратСтроки);
КонецФункции
9 Wobland
 
18.04.12
12:48
(3) на вот, чуть симпатичней

стр="88465";
стр1="";
Для й=1 По СтрДлина(стр) Цикл
   стр1=стр1+Сред(стр, й, 1)+" ";
КонецЦикла;
Сообщить(СокрП(стр1));
10 Попытка1С
 
18.04.12
12:50
вот самый оптимальный

стр="88465";
возврат "8 8 4 6 5";
11 Undefined
 
18.04.12
12:52
(10) ггг)
12 Wobland
 
18.04.12
12:52
(10) первая строка лишняя
13 Попытка1С
 
18.04.12
12:56
(12) ))
14 Ыщъ
 
18.04.12
12:56
Вот теперь можно в базу знаний
15 andrewks
 
18.04.12
13:16
и даже никто не спросил: накуа?
16 PR
 
18.04.12
13:18
(14) Ну да, давайте всякую хрень в БЗ накидаем. Чтобы было.
17 Попытка1С
 
18.04.12
13:19
(16) Что-то у тебя с юмором совсем туго..
18 Wobland
 
18.04.12
13:24
вот что в базу знаний надо ;)
Формат(ч, "ЧГ=1,1,1");
19 Ыщъ
 
18.04.12
13:28
(18) Что это?
20 vovnet
 
18.04.12
13:28
ну кому нужно доработает, просто сам гуглил - так ничего не нашел подходящего))
21 badboychik
 
18.04.12
13:29
на перле была бы одна строчка
22 Wobland
 
18.04.12
13:29
(20) скажи уже, зачем?
23 vovnet
 
18.04.12
13:29
Работает, нужно только в начале функции написать
ВозвратСтроки = "";
Чтобы обнулялось при последующем вызове функции.
24 Wobland
 
18.04.12
13:30
(23) это ты (6) невнимательно читал
25 vovnet
 
18.04.12
13:31
да, возможно
26 badboychik
 
18.04.12
13:35
$a="12345"
$a ~= s/(\d)(?=^\Z)/\1 /
print $a
27 Ыщъ
 
18.04.12
13:36
(26) На Ассемблере можно?
28 Попытка1С
 
18.04.12
13:40
Еще рекурсии не хватает.
29 Mikeware
 
18.04.12
13:43
(28) запросто!
30 vovnet
 
18.04.12
13:57
Ну вот тогда окончательный вариант:

// Функция возвращающая строковое представление числа,
// каждая цифра которого отделена пробелами
Функция РазбивкаЧисел(Разб)
   РазбСтрока = Строка(Разб);    // строковое представление числа
   ДлСтр = СтрДлина(РазбСтрока);    // количество цифр в числе  
   сч = 1;              // счетчик символов
   ВозвратСтроки = "";             // возвращаемая строка
   Для ном = 1 По ДлСтр Цикл
       ВозвратСтроки = ВозвратСтроки + Сред(РазбСтрока, сч, 1) + " ";  
       сч = сч + 1;        
   КонецЦикла;
   Возврат ВозвратСтроки;
КонецФункции
31 Wobland
 
18.04.12
13:57
(30) запятую после слова "функция" пропустил. исправляй, показывай
32 vovnet
 
18.04.12
13:59
сейчас
33 Ыщъ
 
18.04.12
14:01
(30) Чукча не читатель? Чукча писатель?
34 chief accountant
 
18.04.12
14:01
(30) ну и накуа счетчик символов
35 Wobland
 
18.04.12
14:03
(32) я ещё на (5) могу намекнуть. и на (8) с (9)
36 vovnet
 
18.04.12
14:04
можно и без счетчика.
37 vovnet
 
18.04.12
14:07
Wobland, ты еще не видел мой вариант с остатком от деления...
Хорошо, что тут сразу подсказали функцию нужную))
38 Ыщъ
 
18.04.12
14:09
Можно и без ДлСтр
39 Попытка1С
 
18.04.12
14:09
(37) Предлагаю тебе оформить данную разработку в отдельную конфигурацию.
40 Wobland
 
18.04.12
14:11
(37) дата регистрации сегодня. стесняешься? ;)
41 Ыщъ
 
18.04.12
14:14
(39) и только за большие деньги.
42 vovnet
 
18.04.12
14:28
Wobland, я тут только сегодня и зарегался.
Ыщъ, с ДлСтр лучше думаю.. зачем в цикле кучу раз вызывать ф-ю СтрДлина()?
43 Wobland
 
18.04.12
14:33
(42) один раз вызывать. насладись результатом:

Функция ДлинаСтр(стр)
   Сообщить("ой");
   Возврат СтрДлина(стр);
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
   стр=234523;
   стр1="";
   Для й=1 По ДлинаСтр(стр) Цикл
       стр1=стр1+Сред(стр, й, 1)+" ";
   КонецЦикла;
   Сообщить(СокрП(стр1));
44 Wobland
 
18.04.12
14:37
а семёрочный Формат() разделителей групп не знает?
45 vovnet
 
18.04.12
14:39
Спасибо большое за столь пристальное внимание к моему ламерскому коду))
46 antoneus
 
18.04.12
14:43
гыгы

Возврат СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Разб, "1", "1 "), "2", "2 "), "3", "3 "), "4", "4 "), "5", "5 "), "6", "6 "), "7", "7 "), "8", "8 "), "9", "9 "), "0", "0 ")
47 Wobland
 
18.04.12
14:47
(46) каков красавец ;)
48 Гость2
 
18.04.12
14:52
// Функция возвращающая строковое представление числа,

// каждая цифра которого отделена пробелами

Функция РазбивкаЧисел(Разб)
   РазбСтрока = Строка(Разб);    // строковое представление числа

   ДлСтр = СтрДлина(РазбСтрока);    // количество цифр в числе  

   ВозвратСтроки = Лев(РазбСтрока, 1);             // возвращаемая строка

   Для ном = 2 По ДлСтр Цикл

       ВозвратСтроки = ВозвратСтроки + " " + Сред(РазбСтрока, ном, 1);  
             
   КонецЦикла;
   Возврат ВозвратСтроки;
КонецФункции
49 Попытка1С
 
18.04.12
14:53
(46) Незачет, последний пробел не убрал.
50 antoneus
 
18.04.12
14:55
(49) ну, забыл, ну что

Возврат СокрЛП(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Разб, "1", "1 "), "2", "2 "), "3", "3 "), "4", "4 "), "5", "5 "), "6", "6 "), "7", "7 "), "8", "8 "), "9", "9 "), "0", "0 "))
51 Попытка1С
 
18.04.12
14:57
(50) Красавец. А можешь для букв написать такую функцию)
52 Ыщъ
 
18.04.12
15:04
Ветку в "Юмор" не пора?
53 antoneus
 
18.04.12
15:18
(51) в условии сказано для цыфр
54 Попытка1С
 
18.04.12
16:01
(53) Печалька.
55 Mr_Rm
 
18.04.12
16:52
(26) $a ~= s/\B/ /g
(50) быстрее всех вариантов с циклами
56 aleks-id
 
18.04.12
17:07
жесть
Функция РазбивкаЧисел(Разб)
   Для ном = 0 По 9 Цикл
       Разб= СтрЗаменить(Разб, Строка(ном), Строка(ном)+ " ");
   КонецЦикла;
   Возврат СокрЛП(Разб);
КонецФункции
57 aleks-id
 
18.04.12
17:09
обыбался
Функция РазбивкаЧисел(ВхЧисло)
   Разб = Строка(ВхЧисло);
   Для ном = 0 По 9 Цикл
       Разб= СтрЗаменить(Разб, Строка(ном), Строка(ном)+ " ");
   КонецЦикла;
   Возврат СокрЛП(Разб);
КонецФункции
58 andrewks
 
18.04.12
17:10
да, пожалуй, (50) самый быстрый будет
59 aleks-id
 
18.04.12
17:11
(58) зато если буквы разбавлять, то умучаешься копипастить
60 andrewks
 
18.04.12
17:12
(59) нужно написать код для генерации текста кода  О_о
61 Wobland
 
18.04.12
17:12
(59) по кодам символов можно
62 aleks-id
 
18.04.12
17:13
(61) что именно? пример из (50) ?
63 Ыщъ
 
18.04.12
17:17
(60) В бесконечную рекурсию уйдёт и затопит кодом всю Землю.
64 zavsom
 
18.04.12
17:20
(0) Еще один Г1с со своей никому не нужной библиотекой функций???
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.