str_pad (JavaScript)

В PHP есть замечательная функция string str_pad($input, $pad_length), которая возвращает строку input, дополненную слева, справа или с обоих сторон до заданной длины.

В JavaScript такого функционала нет, но можно реализовать, написав соответствующую функцию.

Функция string str_pad(str, pad_length[, pad_string[, pad_type]]), возвращает строку, принимает 4 параметра:

  1. string str - исходная строка, которая будет дополняться;
  2. int pad_length - длина дополнения строки str;
  3. [string pad_string] - необязательный параметр, по-умолчанию " ", строка, которая будет добавляться к str;
  4. [int pad_type] - необязательный параметр:
    • -1 дополняем слева;
    • 0 дополняем слева и справа;
    • 1 — по-умолчанию, дополняем справа.

Для реализации нам понадобится функция string str_repeat(input, multiplier).

/** * Функция возвращает строку input, дополненную слева, справа или с обоих сторон до заданной длины * @param {string} str дополняемая строка * @param {int} pad_length длина результирующей строки * @param {string} pad_string строка, которой дополняем str * @param {int} pad_type в какую сторону дополнять (По-умолчанию 1) * -1 дополняем слева * 0 дополняем слева и справа * 1 дополняем справа * @returns {*} */ function str_pad(str, pad_length, pad_string, pad_type) { if (pad_length <= str.length) { return str; } pad_string = pad_string || ' '; pad_type = pad_type === undefined ? 1 : pad_type; var left_pad = 0, left_repeat, right_pad = 0, right_repeat, num_pad = pad_length - str.length; if (pad_type === 1) { // с правой стороны right_pad = num_pad; } else if (pad_type === -1) { // дополняем слева left_pad = num_pad; } else if (pad_type === 0) { // с каждой стороны left_pad = Math.floor(num_pad / 2); right_pad = num_pad - left_pad; } else { return str; } // Сколько раз надо повторить строку слева left_repeat = Math.floor(left_pad / pad_string.length); // Сколько раз надо повторить строку справа right_repeat = Math.floor(right_pad / pad_string.length); if (left_pad > 0) { str = (left_repeat > 0 ? str_repeat(pad_string, left_repeat) : pad_string).substring(0, left_pad) + str; } if (right_pad > 0) { str += (right_repeat > 0 ? str_repeat(pad_string, right_repeat) : pad_string).substring(0, right_pad); } return str; } /** * Функция повторения строки N раз */ function str_repeat(input, multiplier) { return new Array(multiplier + 1).join(input); }

Пример

Демонстрация работы ниже:

str_pad('справа', 14); // Вернет: "справа " str_pad('слева', 14, '-=', -1); // Вернет: "-=-=-=-=слева" str_pad('со всех сторон', 30, '_/', 0); // Вернет: "_/_/_/_/со всех сторон_/_/_/_/" str_pad('справа', 10, '___', 1); // Вернет: "справа___"

Категории

ПрограммированиеJavaScriptСтроки в JavaScriptСтрокиФункции аналогичные PHP

Читайте также

Комментарии