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