@vtaeke

Как заменить данные карты на звездочки?

Необходимо реализовать метод getHiddenCard, который принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер 2034399002125581, то скрытая версия выглядит так ****5581. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым необязательным параметром. Значение по умолчанию — 4.

Пример кода, который должен выводиться:

// Кредитка передается внутрь как строка

getHiddenCard("1234567812345678", 2); // "**5678"

getHiddenCard("1234567812345678", 3); // "***5678"

getHiddenCard('1234567812345678'); // "****5678"

getHiddenCard('2034399002121100', 1); // "*1100"


const  getHiddenCard = (str, x = 4) => {
  let basestr = str.slice(12, 17);
  let newstr = str.slice(0, 12);
  let secondwstr = newstr.replace(newstr, '*'.repeat(5));
  return secondwstr + basestr;
}

Реализовал метод, но как его доделать до конца, ведь он будет выводить постоянно 5* перед последними четырьмя цифрами.
  • Вопрос задан
  • 3544 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const hidden = (str, count = 4) => '*'.repeat(count) + str.slice(-4);

или

const hidden = (str, count = 4) => str.replace(/.*?(?=.{0,4}$)/, Array(count + 1).join('*'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@RedricShuhart
Привет! Вот тут затесался хардкод:
let secondwstr = newstr.replace(newstr, '*'.repeat(5));


Должно быть:
let secondwstr = newstr.replace(newstr, '*'.repeat(x));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы