PadEnd: примеры (JAVASCRIPT)
padEnd(targetLength, padString?): stringМетод padEnd в JavaScript
Метод padEnd() предназначен для дополнения текущей строки другой строкой до заданной длины. Дополнение происходит с конца (справа) исходной строки. Этот метод полезен для форматирования текста, выравнивания данных в столбцах или подготовки строк фиксированной длины.
Синтаксис метода: str.padEnd(targetLength [, padString]).
- targetLength (целое число): Целевая длина итоговой строки после дополнения. Если значение меньше или равно длине исходной строки, то строка возвращается без изменений.
- padString (строка, необязательный аргумент): Строка для дополнения. Если эта строка слишком длинная, она будет обрезана. По умолчанию используется пробел (
" ").
Метод возвращает новую строку заданной длины, состоящую из исходной строки, дополненной в конце строкой padString.
Короткие примеры использования
Базовое использование с пробелом по умолчанию:
console.log('abc'.padEnd(10));"abc " // Дополнено 7 пробелами до длины 10
Использование пользовательской строки для дополнения:
console.log('123'.padEnd(6, '0'));"123000"
Случай, когда целевая длина меньше длины строки:
console.log('Длинная строка'.padEnd(5, '-'));"Длинная строка" // Строка возвращена без изменений
Использование строки, которая будет обрезана при дополнении:
console.log('id'.padEnd(8, 'xyz-'));"idxyz-xy" // Символы 'xyz-' повторяются и обрезаются
Похожие функции в JavaScript
- String.prototype.padStart(): Аналогичный метод, но дополняет строку в начале (слева). Используется для выравнивания чисел или текста по правому краю.
- String.prototype.repeat(): Повторяет строку заданное количество раз. Может комбинироваться с методами slice для ручного дополнения, но менее удобен для точного достижения фиксированной длины.
- Ручная реализация с циклами: Использование циклов
forилиwhileдля конкатенации. МетодpadEndявляется более декларативной и производительной альтернативой.
Метод padEnd предпочтительнее, когда требуется точно достичь заданной длины строки с дополнением справа. padStart используется для дополнения слева, что часто нужно для форматирования чисел.
Типичные ошибки
Передача нецелочисленного значения в targetLength:
console.log('hi'.padEnd(5.7, '*'));"hi***" // Значение будет приведено к целому числу (5)
Использование пустой строки в качестве padString:
console.log('test'.padEnd(8, ''));"test" // Дополнение не происходит, возвращается исходная строка
Ожидание работы метода на месте (мутативности). Метод возвращает новую строку:
let str = 'js';
str.padEnd(5, '!');
console.log(str);"js" // Исходная строка не изменилась
История изменений
Метод padEnd был добавлен в спецификацию ECMAScript 2017 (ES8). Он является частью стандартной библиотеки JavaScript и поддерживается во всех современных браузерах и средах выполнения, таких как Node.js. Существенных изменений в его работе с момента добавления не было. Для поддержки в устаревших средах может потребоваться использование полифила.
Расширенные примеры
Форматирование таблицы с выравниванием по левому краю:
const items = [
['Яблоки', 5],
['Апельсины', 12],
['Бананы', 8]
];
items.forEach(([name, count]) => {
console.log(`${name.padEnd(10, '.')} ${count.toString().padStart(3, '0')}`);
});Яблоки.... 005 Апельсины.. 012 Бананы..... 008
Создание строки-прогресс-бара фиксированной длины:
function createProgress(percent, length=20) {
const filled = Math.round(length * percent / 100);
return `[${'#'.padEnd(filled, '#').padEnd(length, '-')}]`;
}
console.log(createProgress(75));[###############-----]
Обработка строк с многобайтовыми символами (например, эмодзи). Метод считает длину по кодовым единицам, а не видимым символам:
console.log('????'.padEnd(3, '_'));
console.log('????????'.padEnd(4, '_'));"????__" // Эмодзи занимает 2 кодовые единицы "????????__" // Составной эмодзи занимает 4 кодовые единицы
Использование с числовыми значениями. Число необходимо сначала преобразовать в строку:
console.log((42).toString().padEnd(5, '0'));
console.log(String(3.14).padEnd(6, '0'));"42000" "3.1400"
Аналоги в других языках программирования
Python: Метод str.ljust(). Отличается тем, что принимает строку заполнения длиной ровно в 1 символ.
print('text'.ljust(10, '-'))text------
PHP: Функция str_pad(). Более универсальная, имеет параметр для выбора стороны дополнения (STR_PAD_RIGHT, STR_PAD_LEFT, STR_PAD_BOTH).
echo str_pad('text', 10, '-', STR_PAD_RIGHT);text------
C#: Метод PadRight(). Семантика очень близка к JavaScript.
Console.WriteLine("text".PadRight(10, '-'));text------
SQL (MySQL): Функция RPAD(). Работает аналогично, но является частью SQL-запросов.
SELECT RPAD('text', 10, '-');text------