Имя: Пароль:
1C
 
Убрать несколько пробелов в строке
0 Кадош
 
05.06.09
16:49
Есть строка вида
Слово1 Слово2  Слово3   Слово4
надо привестик виду:
Слово1 Слово2 Слово3 Слово4

СтрЗаменить(МояСтрока, "  ",Символ(32)); не срабатывает
1 ТелепатБот
 
гуру
05.06.09
16:49
2 Deon
 
05.06.09
16:50
(0) Стало быть там не пробелы?
3 Кадош
 
05.06.09
16:52
(2) как проверить?
4 shuhard
 
05.06.09
16:54
(3) пробеги циклом по КодСимвола(<Строка>, <Номер символа>)
5 asady
 
05.06.09
16:54
(0)
СложнаяСтрока=СтрЗаменить(ТвояСтрока," ",Символы.ПСс);
КолСлов=СтрЧислоСтрок(СложнаяСтрока);
Результат="";
Для сч=1 по КолСлов Цикл
 тСлово=СокрЛП(СтрПолучитьСтроку(СложнаяСтрока,сч));
 Если тСлово="" Тогда
     продолжить;
 конецЕсли;
 Результат=Результат+" "+тСлово;
КонецЦикла;
Результат=Сред(Результат,2);
6 Маркетолог
 
05.06.09
16:57
(0) Там наверное что то типа Символы.НПП , а не пробел
7 wPa
 
05.06.09
16:57
(5) ПОка Найти(ТСтрока,"Двапробела") > 0 Цикл
     ТСтрока = СтрЗаменить(ТСтрока,"Двапробела","Одинпробел")
8 Серый Пес
 
05.06.09
16:57
Меняй два пробела на один в цикле до тех пор, пока будет находиться в строке два пробела подряд :)
9 Серый Пес
 
05.06.09
16:58
(7) Блин, опередил
10 wPa
 
05.06.09
16:58
(6) НПП - это неразрывный пробел введнный микрософтом - например в числительных где разряды разделены пробелами - а у него слова
11 wPa
 
05.06.09
16:58
(9) =)
12 wPa
 
05.06.09
16:59
(10) + чтобы часть числа не перенесли автоматом на другую строчку.
13 Ц_У
 
05.06.09
17:00
Если судить по условию, то как минимум 1 пробел между ними есть, можно сделать так, заменяем 1 пробел на символ ";" например:
СтрЗаменить(МояСтрока, " ",";"); " " - 1 пробел;
Получим список значений (или он через ","?) идем циклом по этому списку значений с функц. СокрЛП, и формированием новой строки... как-то так :)
14 wPa
 
05.06.09
17:01
(13) Хм. а не проще (7),(8) ?
15 Andry888
 
05.06.09
17:02
(13) а где "двапробела" превратяться в ";;"?)
16 Кадош
 
05.06.09
17:04
(14) спасибо сделал так (7)
17 Ц_У
 
05.06.09
17:06
(14) частный случай...
(15) да нужно немного подумать.. думайте :)
18 Bugmenot
 
05.06.09
17:10
Как-то так:

RegExp=Новый COMОбъект("VBScript.RegExp");
RegExp.MultiLine=Истина;
RegExp.Global=Истина;
RegExp.IgnoreCase=Истина;
RegExp.Pattern="\s{2,}";
Текст=RegExp.Replace(Текст,"");
19 Кадош
 
05.06.09
17:21
а как пропустить несколько слов?
20 hhhh
 
05.06.09
17:37
(13)

Функция УбратьЛишниеПробелы(Наим)
   ТекСтр = СокрЛП(Наим);
   Поз = Найти(ТекСтр, "  ");
   Пока Поз > 0 Цикл
       ТекСтр = Лев(ТекСтр, Поз - 1) + " " + СокрЛП(Сред(ТекСтр, Поз));
       Поз = Найти(ТекСтр, "  ");
   КонецЦикла;
   Возврат ТекСтр;
КонецФункции
21 Serg_1960
 
05.06.09
18:29
(вспомнил): на одном из обсуждений, автор после хх-надцатого поста сообшил что ему в числе "пробел" убрать нужно. Ему не нравилось что в отчет выводилось "1 234.56" вместо "1234.56" :)
22 Said_We
 
05.06.09
18:47
Стр1 = СокрЛП(<Исходная строка>);

Кол  = ДлинаСтр(Стр1);
Кол1 = 0;

Если Кол = 0 Тогда
Возврат;
КонецЕсли;

Пока Кол <> Кол1 Цикл

Кол1 = Кол;
Стр1 = СтрЗаменить(Стр1, "  ", " ")
Кол = ДлинаСтр(Стр1);

КонецЦикла;