Имя: Пароль:
1C
 
Пробелы 1с
,
0 Fargot
 
29.06.21
12:14
Здравствуйте подскажите пожалуйста,как убрать пробелы лишние в строке между цифрами и словами
1 Волшебник
 
модератор
29.06.21
12:19
2 Fargot
 
29.06.21
12:24
Нужно убрать кучу лишних пробелов подряд :с
3 Злопчинский
 
29.06.21
12:29
я хз как это в 8-ке, в 77 так:
Пока Найти(МояСтрока,"  ") <> 0 Тогда МояСтрока = СтрЗаменить(МояСтрока,"  "," "); КонецЦикла;
4 Новый1сник2
 
29.06.21
12:30
(2) СтрЗаменить("Произвольная Строка", " " , "")
5 Злопчинский
 
29.06.21
12:30
в Найти и второй параметр в СтрЗаменить - в кавычках два пробела
6 Галахад
 
гуру
29.06.21
12:31
(3) В 8-ке есть СтрРазделить, СтрСоединить
7 Злопчинский
 
29.06.21
12:31
(4) это точно неправильно
8 Новый1сник2
 
29.06.21
12:32
(7) да правильнее с двумя пробелами,  СтрЗаменить("Произвольная Строка", "  " , "")
9 Bigbro
 
29.06.21
12:33
в (3) вместо "тогда" "цикл"
10 Злопчинский
 
29.06.21
12:35
(9) ага, сорри, описался.. ;-)
11 Злопчинский
 
29.06.21
12:35
(8) так тоже неправильно
12 Новый1сник2
 
29.06.21
12:37
(11) да вижу, третий параметр один пробел нужно оставить
13 Новый1сник2
 
29.06.21
12:38
(11) СтрЗаменить("Произвольная Строка", "  " , " "), так правильно ?
14 apdate by
 
29.06.21
12:39
Символы.ПП вроде
15 Bigbro
 
29.06.21
12:39
(13) теперь оберни в цикл и получишь (3)
потому что пробелов может быть и 3 подряд и больше.
16 Злопчинский
 
29.06.21
12:40
(12) так тоже будет работать неправильно (скорее всего, не думаю что в 8-ке изменили порядок обработки, скорее всего осталось как в 77): проведи тест
МояСтрока = "1здесьтрипробела2";
МояСтрока = СтрЗаменить(МояСтрока,"здесьдвапробела","здесьодинпробел");
Сообщить(СтрЧислоВхождений(МояСтрока,"здесьодинпробел");
.
сообщи результат ;-)
17 Злопчинский
 
29.06.21
12:41
(15) опередун...
18 Злопчинский
 
29.06.21
12:41
(15) стаж больше 5 лет у чела... ;-)
да.. восьмерочники - они такие....
19 Галахад
 
гуру
29.06.21
12:45
Циклы...

СтрВход = "воладыо    лдоыаоы    12321";
МассивСтрок = СтрРазделить(СтрВход, " ", Ложь);
СтрВыход = СтрСоединить(МассивСтрок, " ");
20 Новый1сник2
 
29.06.21
12:46
(15) согласен, нужно делать в цикле.
21 apdate by
 
29.06.21
12:48
Не знаю подойдет ли  когда то делал для поиска при загрузке из стороннего ПО данных


&НаСервере
Функция Транслит(Вход) Экспорт
    УдалитьСимволы = Вход;
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, """", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "(", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, ")", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "_", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "__", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "    ", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "  ", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, " ", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, ",", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, ".", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "}", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "{", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "[", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "]", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "-", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "--", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "---", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "`", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "~", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "*", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "^", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, ";", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, ":", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "&", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "?", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "%", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "$", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "#", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "№", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "@", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "!", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "+", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "-", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "=", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "/", "");    
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "|", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "||", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "\", "");
    УдалитьСимволы = СтрЗаменить(УдалитьСимволы, "*", "");
        
    Коды = Новый Соответствие;
    Коды.Вставить("ё","yo");
    Коды.Вставить("Ё","Yo");
    Нач = КодСимвола("А");
    Англ = "A" "B" "V" "G" "D" "E" "Zh" "Z" "I" "Y" "K" "L" "M" "N" "O" "P" "R" "S" "T" "U" "F" "Kh" "Ts" "Ch" "Sh" "Shch" "" "Y" "" "E" "Yu" "Ya" "a" "b" "v" "g" "d" "e" "zh" "z" "i" "y" "k" "l" "m" "n" "o" "p" "r" "s" "t" "u" "f" "kh" "ts" "ch" "sh" "shch" "" "y" "" "e" "yu" "ya";
    Для К = Нач по КодСимвола("я") Цикл
        Коды.Вставить(Символ(К), СтрПолучитьСтроку(Англ, К - Нач + 1));
    КонецЦикла;
    Выход = "";
    Для К=1 по СтрДлина(УдалитьСимволы) Цикл
        Бкв = Сред(УдалитьСимволы,К,1);
        Зн = Коды.Получить(Бкв);
        Выход = Выход + ?(Зн = Неопределено, Бкв, Зн);
    КонецЦикла;
    Возврат Выход;
КонецФункции
22 apdate by
 
29.06.21
12:50
используйте УдалитьСимволы = СтрЗаменить(УдалитьСимволы, """", "");
я сырой в 1С но все - же так бы и поступил

какая разница сколько раз ты заюзаешь УдалитьСимволы = СтрЗаменить(УдалитьСимволы, """", ""); или в цикле?
23 Hans
 
29.06.21
12:50
все работает

СтрЗаменить("Произвольная      Строка    ", "  " , "")
24 Hans
 
29.06.21
12:50
Зачем циклы?
25 apdate by
 
29.06.21
12:52
ну или же

можно думаю так что ле
А = Истина;
ПОка А = Истина Цикл
ЕстьЕщеПРобелы = СтрНайти("Блв "," ");

Если ЕстьЕщеПРобелы > 0 Тогда
УдалитьСимволы = СтрЗаменить(УдалитьСимволы, " ", "");
ИНаче
А = Ложь;
КонецЕсли;
КонецЦикла;
26 Hans
 
29.06.21
12:53
На ровном месте костыли выдумываете.
27 Злопчинский
 
29.06.21
12:54
(24) что говорит у тебя тест из (16)..?
28 Галахад
 
гуру
29.06.21
12:54
(23) А что делать с: СтрЗаменить("Произвольная Строка    ", "  " , "")
29 apdate by
 
29.06.21
12:54
(23) а если будет в строке 10 символов пробела? одновременно

например вот так А = "Привет          мир";

что (23) сделает?
30 Hans
 
29.06.21
12:58
(29) все нормально сделает, если вторым параметром указывать один символ.
31 Hans
 
29.06.21
12:59
(27) Не так понял тему. Оказывается надо не все убирать, а лишние.
32 Hans
 
29.06.21
13:00
Тогда да, ваши костыли семерочные.
33 Злопчинский
 
29.06.21
13:00
(30) не сделает нормально.
я, блин, клюшечник мохнатый, залез в свою 8-ую WMS, в табло проверил. Не сделает нормально.
34 Злопчинский
 
29.06.21
13:01
(31)  ну так даже и все не уберет...
восьмерочник, блин, 12 лет стажа...
.
"как дети..."
35 apdate by
 
29.06.21
13:02
Полез в отладчик да  (23) реально верно работает
пардоньте.

да к стати (31) я ту да же
36 Галахад
 
гуру
29.06.21
13:02
(34) (19) проверь.
37 Bigbro
 
29.06.21
13:04
охренеть. 36 постов в обсуждении вопроса ответ на который был дан в 3 посте.
38 Галахад
 
гуру
29.06.21
13:05
(37) Всегда так было. :)
39 Злопчинский
 
29.06.21
13:09
(36) зачем? если работает - то работает (думаю что так), не  работает - к (3) отношения не имеет
40 Злопчинский
 
29.06.21
13:09
Восьмерочники сегодня сделали мой день ;-)
41 apdate by
 
29.06.21
13:16
Пошел в 1С написал такую ерунду

А = "Привет          мир";
    Б = "";
    МассивСтрок = СтрРазделить(А, " ", Ложь);
    Если МассивСтрок.Количество() > 0 Тогда
        Для Каждого ПОдстрока ИЗ МассивСтрок Цикл
            Б = Б+ПОдстрока+" ";
        КонецЦикла;
    КонецЕсли;
    //Рез "Б"=>Привет мир

потом заглянул на форум и увидел (19)

пошел снова в 1С да! работает )

МассивСтрок = СтрРазделить(А, " ", Ложь);
    СтрВыход = СтрСоединить(МассивСтрок, " ");
    //Рез "СтрВыход"=>Привет мир

(19) возьму на заметку!
42 Злопчинский
 
29.06.21
13:57
еще учесть что вместо пробела запросто может стоять неразрывный пробел
43 Hans
 
29.06.21
14:20
(42) Приведи полный код, а то я неосилю.
44 Вафель
 
29.06.21
14:21
надо на regexp переходить. там можно без циклов задачу решить
45 ДенисЧ
 
29.06.21
14:22
(44) Типа регекспы унутре, рядом с неонкой, без цикла работают?
46 Meilleur
 
29.06.21
15:03
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.Pattern = "\s";//удаляем все нецифровые символы
ИтоговаяСтрока = RegExp.Replace(Стр, "");
Сообщить(ИтоговаяСтрока);
47 Meilleur
 
29.06.21
15:04
(46) Только комментарий я забыл подправить в своём коде. Для нецифровых символов команда будет:
RegExp.Pattern = "\D+";
48 Meilleur
 
29.06.21
15:21
Но я, кажется, невнимательно прочитал условие. Прошу прощения. Тогда лучше как в (19)
49 apdate by
 
30.06.21
09:06
(43) МассивСтрок = СтрРазделить(А, Неразрывный пробел, Ложь);
    СтрВыход = СтрСоединить(МассивСтрок, " ");
50 Timon1405
 
30.06.21
09:18
(46) RegExp.Pattern = "\s+";
ИтоговаяСтрока = RegExp.Replace(Стр, " ");
51 Hans
 
30.06.21
10:03
Если уже трое написали без цикла СтрЗаменить("Произвольная      Строка    ", "  " , "") значит рабочее решение.
52 1Сергей
 
30.06.21
10:24
(51) миллиарды мух не могут ошибаться
53 Hans
 
05.07.21
12:59
(52) Это ты что ли на 330м обитаешь?
54 1Сергей
 
05.07.21
13:04
(53) Обитаю. А что?
55 cathode
 
06.07.21
07:47
(51) Со СтрЗаменить без цикла тоже можно:

СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, "  ", " $"), "$ ", ""), "$", "")

$ - какой-нибудь редкий символ, например вертикальная табуляция.
Ошибка? Это не ошибка, это системная функция.