Специальные методы строк
Специальные методы строк
Технический фундамент «специальных» строковых методов
Эти методы решают узкие задачи форматирования и нормализации, которые трудно и рискованно реализовывать вручную циклами.
Их сила в предсказуемом контракте: четкий вход, четкий тип результата.
const id = '7';
const padded = id.padStart(3, '0');
const line = '-'.repeat(5);
console.log(padded); // 007
console.log(line); // -----
В этом уроке разберем repeat, padStart, padEnd, concat, normalize.
Повтор текста: repeat
repeat(count) повторяет строку указанное число раз.
console.log('='.repeat(10)); // ==========
console.log('ha'.repeat(3)); // hahaha
Практический кейс: визуальный разделитель в логах или простой индикатор прогресса.
function progressBar(done, total) {
const filled = '#'.repeat(done);
const empty = '-'.repeat(total - done);
return `[${filled}${empty}]`;
}
console.log(progressBar(3, 8)); // [###-----]
Проверь себя: что произойдет, если передать в repeat отрицательное число?
Подсказка: будет ошибка RangeError (нельзя повторять строку отрицательное число раз).
Выравнивание: padStart и padEnd
padStart(targetLength, padString) добавляет символы в начало строки до нужной длины.
console.log('7'.padStart(3, '0')); // 007
console.log('42'.padStart(5, ' ')); // ' 42'
Смотри, что важно:
- если
padStringне указать, по умолчанию используется пробел; padStringбудет повторяться и при необходимости обрезаться, чтобы ровно добить строку доtargetLength.
padEnd делает то же самое в конце строки.
console.log('JS'.padEnd(6, '.')); // JS....
Микро-сценарий: маскирование номера карты.
function maskCard(last4) {
return String(last4).padStart(16, '*');
}
console.log(maskCard('1234')); // ************1234
Склейка строк: concat
concat объединяет строки. Чаще сейчас используют шаблонные строки, но concat полезно знать.
const fullName = 'Анна'.concat(' ', 'Иванова');
console.log(fullName); // Анна Иванова
То же самое обычно пишут так:
const fullName2 = `${'Анна'} ${'Иванова'}`;
Unicode и одинаковые «на вид» строки: normalize
Новый термин: normalize() приводит Unicode-строку к нормализованной форме, чтобы корректно сравнивать символы с диакритикой.
const a = 'e\u0301'; // e + combining accent
const b = 'é';
console.log(a === b); // false
console.log(a.normalize() === b.normalize()); // true
Это важно, если ты работаешь с международными именами или импортируешь данные из разных систем.
Что будет, если изменить вход
console.log('9'.padStart(2, '0')); // 09
console.log('99'.padStart(2, '0')); // 99
Если строка уже достаточной длины, padStart не добавляет символы.
Типичные ошибки
- Передавать в
repeatотрицательное или слишком большое значение. - Ожидать, что
padStartобрежет длинную строку (он не обрезает). - Использовать
concatв длинной сборке, где шаблонные строки читаются лучше. - Игнорировать
normalizeпри сравнении интернациональных текстов.
Анти-провал: выбирай метод под конкретную задачу, а не «по привычке». Для UI-форматирования padStart/padEnd часто надежнее самодельных циклов.
Краткий итог
repeatповторяет строку нужное число раз.padStartиpadEndвыравнивают строку до заданной длины.concatсклеивает строки, но часто проще шаблонные строки.normalizeпомогает корректно сравнивать Unicode-строки.- Специальные методы нужны для узких, но очень практичных сценариев.