helpf.pro
Регистрация

v8: Получить строку без лишних пробелов

ArtemKolos
04.01.2012 20:39Прочитано: 28745
Код 1C v 8.2 УП
 
Функция ПолучитьСтрокуБезЛишнихПробелов(ВыбСтрока)
ПредСимвол=" ";
СтрокаРезультат="";
Для к=1 По СтрДлина(ВыбСтрока) Цикл
ТекСимвол = Сред(ВыбСтрока,к,1);
Если ТекСимвол = ПредСимвол И ПредСимвол = " " Тогда
ПредСимвол = ТекСимвол;
Продолжить;
Иначе
СтрокаРезультат = СтрокаРезультат + ТекСимвол;
ПредСимвол = ТекСимвол;
КонецЕсли;
КонецЦикла;

Возврат СтрокаРезультат;
КонецФункции

Изменено 04.01.12 20:47:24
Yandex
Возможно, вас также заинтересует
Реклама на портале
8SiriuS8
08.01.2012 20:44Ответ № 1
Что то не понял смысл всего этого кода а что СокрЛП и СтрЗаменить не тоже самое делают
ab
08.01.2012 21:23Ответ № 2
здесь ищутся лишние пробелы внутри строки, а не по краям
kanary
13.01.2012 08:21Ответ № 3
А не проще как-то так?

Функция ПолучитьСтрокуБезЛишнихПробелов(ВыбСтрока)
СтрокаРезультат=ВыбСтрока;
Пока Найти(СтрокаРезультат," ")>0 Цикл
СтрокаРезультат = стрЗаменить(СтрокаРезультат," "," ");
КонецЦикла;

Возврат СтрокаРезультат;
КонецФункции
odinson
06.02.2012 12:31Ответ № 4
Лишние пробелы из строки можно убрать крайне просто. Для сего нужно помнить, что по-умолчанию аргументы в функцию передаются по ссылке. Таким образом имеем функцию:
Код 1C v 8.2 УП
 
Функция УбратьЛишниеПробелы(ВхСтрока)
ВхСтрока = СокрЛП(ВхСтрока); //Убираем пробелы в начале и в конце
Пока Найти(ВхСтрока, " ") > 0 Цикл // " " <- это два пробела
ВхСтрока = СтрЗаменить(ВхСтрока, " ", " ");
КонецЦикла;
КонецФункции;


В итоге можно даже ничего не возвращать.
Использование функции возможно следующим образом:
Код 1C v 8.2 УП
 
Процедура НекаяПроцедураВРаботе()
СтрокаСЛишнимиПробелами = "Строка, в которой есть много лишних пробелов ";
УбратьЛишниеПробелы(СтрокаСЛишнимиПробелами);
//После выполнения предыдущей строчки переменная СтрокаСЛишнимиПробелами содержит значение "Строка, в которой есть много лишних пробелов"
КонецПроцедуры;
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.