Как скрыть часть строки
Короткий ответ
Возьмите последние четыре символа и заполните остальную длину звёздочками:
const card = '4111111111111111';
const masked = card.slice(-4).padStart(card.length, '*');
console.log(masked);Результат:
************1111Почта
Оставьте первую букву имени и домен, а остальное скройте:
const email = 'anna.smith@example.com';
const [name, domain] = email.split('@');
const masked = name[0] + '*'.repeat(name.length - 1) + '@' + domain;
console.log(masked);Результат:
a*********@example.comЧастая ошибка
Если строка короче видимой части, repeat() получит отрицательное число и выбросит ошибку. Защититесь от коротких строк:
const mask = (text, visible = 4) =>
text.length <= visible ? text : '*'.repeat(text.length - visible) + text.slice(-visible);
console.log(mask('123'));
console.log(mask('123456789'));Результат:
123
*****6789Функции из этого ответа
- String.prototype.slice — Возвращает часть строки.
- String.prototype.padStart — Дополняет строку слева до нужной длины.
- String.prototype.repeat — Повторяет строку заданное число раз.