HelpF.pro

Как обрезать строку до заданой длины или дополнить ее символами, если длина ее меньше заданой?

Код 1C v 8.х
 // Функция Дополняет переданную в качестве первого параметра строку символами слева\справа до заданной длины и возвращает ее
// Незначащие символы слева и справа удаляются
// По умолчанию функция добавляет строку нулями слева
//
// Параметры:
// Строка - Строка - исходная строка, которую необходимо дополнить символами до заданной длины
// ДлинаСтроки - Число - требуемая конечная длина строки
// Символ - Строка - (необязательный) значение символа, которым необходимо дополнить строку
// Режим - Строка - (необязательный) [Слева|Справа] режим добавления символов к исходной строке: слева или справа
//
// Пример 1:
// Строка = "1234"; ДлинаСтроки = 10; Символ = "0"; Режим = "Слева"
// Возврат: "0000001234"
//
// Пример 2:
// Строка = " 1234 "; ДлинаСтроки = 10; Символ = "#"; Режим = "Справа"
// Возврат: "1234######"
//
// Возвращаемое значение:
// Строка - строка, дополненная символами слева или справа
//

Функция ДополнитьСтроку(Знач Строка, Знач ДлинаСтроки, Знач Символ = "0", Знач Режим = "Слева") Экспорт

Если ПустаяСтрока(Символ) Тогда
Символ = "0";
КонецЕсли;

// длина символа не должна превышать единицы
Символ = Лев(Символ, 1);
// удаляем крайние пробелы слева и справа строки
Строка = СокрЛП(Строка);

КоличествоСимволовНадоДобавить = ДлинаСтроки - СтрДлина(Строка);

Если КоличествоСимволовНадоДобавить > 0 Тогда
СтрокаДляДобавления = "";
Пока СтрДлина(СтрокаДляДобавления) < КоличествоСимволовНадоДобавить Цикл
СтрокаДляДобавления = СтрокаДляДобавления + Символ;
КонецЦикла;

Если ВРег(Режим) = "СЛЕВА" Тогда
Строка = СтрокаДляДобавления + Строка;
ИначеЕсли ВРег(Режим) = "СПРАВА" Тогда
Строка = Строка + СтрокаДляДобавления;
КонецЕсли;
КонецЕсли;

Возврат Строка;

КонецФункции


Пример Дополнения строки пробелами до заданной длины
Код 1C v 8.х
 Функция ДополнитьСтрокуПробелами(Строка, Длина)
Пока СтрДлина(Строка) < Длина Цикл
Пробел = Символ(0);
Строка = Строка + Пробел;
КонецЦикла;
Возврат Строка;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/931.html