Вход | Регистрация
 

Пробелы 1с

Пробелы 1с
Я
   Fargot
 
29.06.21 - 12:14
Здравствуйте подскажите пожалуйста,как убрать пробелы лишние в строке между цифрами и словами
   Волшебник
 
Модератор
1 - 29.06.21 - 12:19
   Fargot
 
2 - 29.06.21 - 12:24
Нужно убрать кучу лишних пробелов подряд :с
   Злопчинский
 
3 - 29.06.21 - 12:29
я хз как это в 8-ке, в 77 так:
Пока Найти(МояСтрока,"  ") <> 0 Тогда МояСтрока = СтрЗаменить(МояСтрока,"  "," "); КонецЦикла;
   Новый1сник2
 
4 - 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) это точно неправильно
   Новый1сник2
 
8 - 29.06.21 - 12:32
(7) да правильнее с двумя пробелами,  СтрЗаменить("Произвольная Строка", "  " , "")
   Bigbro
 
9 - 29.06.21 - 12:33
в (3) вместо "тогда" "цикл"
   Злопчинский
 
10 - 29.06.21 - 12:35
(9) ага, сорри, описался.. ;-)
   Злопчинский
 
11 - 29.06.21 - 12:35
(8) так тоже неправильно
   Новый1сник2
 
12 - 29.06.21 - 12:37
(11) да вижу, третий параметр один пробел нужно оставить
   Новый1сник2
 
13 - 29.06.21 - 12:38
(11) СтрЗаменить("Произвольная Строка", "  " , " "), так правильно ?
   apdate by
 
14 - 29.06.21 - 12:39
Символы.ПП вроде
   Bigbro
 
15 - 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";
МассивСтрок = СтрРазделить(СтрВход, " ", Ложь);
СтрВыход = СтрСоединить(МассивСтрок, " ");
   Новый1сник2
 
20 - 29.06.21 - 12:46
(15) согласен, нужно делать в цикле.
   apdate by
 
21 - 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);
        Зн = Коды.Получить(Бкв);
        Выход = Выход + ?(Зн = Неопределено, Бкв, Зн);
    КонецЦикла;
    Возврат Выход;
КонецФункции
   apdate by
 
22 - 29.06.21 - 12:50
используйте УдалитьСимволы = СтрЗаменить(УдалитьСимволы, """", ""); 
я сырой в 1С но все - же так бы и поступил

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

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

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

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

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

да к стати (31) я ту да же
   Галахад
 
36 - 29.06.21 - 13:02
(34) (19) проверь.
   Bigbro
 
37 - 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
Восьмерочники сегодня сделали мой день ;-)
   apdate by
 
41 - 29.06.21 - 13:16
Пошел в 1С написал такую ерунду

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


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

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

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


(19) возьму на заметку!
   Злопчинский
 
42 - 29.06.21 - 13:57
еще учесть что вместо пробела запросто может стоять неразрывный пробел
   Hans
 
43 - 29.06.21 - 14:20
(42) Приведи полный код, а то я неосилю.
   Вафель
 
44 - 29.06.21 - 14:21
надо на regexp переходить. там можно без циклов задачу решить
   ДенисЧ
 
45 - 29.06.21 - 14:22
(44) Типа регекспы унутре, рядом с неонкой, без цикла работают?
   Meilleur
 
46 - 29.06.21 - 15:03
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.Pattern = "\s"//удаляем все нецифровые символы

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

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

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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.