美文网首页
[7kyu]Credit Card Mask

[7kyu]Credit Card Mask

作者: 君肄塵 | 来源:发表于2017-07-07 14:33 被阅读28次

该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~

  • 场景

通常当你买东西时,会询问你的信用卡号码,电话号码来验证你的身份。但是,由于有人可能会看着你的信息,你不希望这些在屏幕上显示。所以,我们需要用掩码来替换。

  • 任务
  • 写一个函数maskify,将除最后四个字符之外的字符全部替换为'#'。
  • 例如:
    maskify("4556364607935616") == "############5616"
    maskify( "64607935616") == "#######5616"
    maskify( "1") == "1"
    maskify( "") == ""
  // "What was the name of your first pet?"
    maskify("Skippy")                                   == "##ippy"
    maskify("Nananananananananananananananana Batman!") == "####################################man!"

  • 解答
  • 其一
const maskify = str => (str.length > 4 ? '#'.repeat(str.length - 4) : '' ) + [...str].splice(-4,4).join('');
  • 其二
const maskify = str => (str.length > 4 ? new Array(str.length - 4).fill('#').join('') : '' ) + [...str].splice(-4,4).join('');
  • 其三
const maskify = str => str.slice(0, -4).replace(/./g, '#') + str.slice(-4);
  • 其四
const maskify = str => '#'.repeat( str.length - 4) + str.substr(-4);
  • 其五
// 正则匹配
const maskify = str => str.replace(/.(?=....)/g, '#');
const maskify = str => str.replace(/.(?=.{4})/g, "#");
const maskify = str => str.replace(/(?=.{5})./g, '#');
  • 其六
function maskify(cc) {
      var x = cc.length - 4;
      return x > 0 ? new Array(x + 1).join('#') + cc.slice(x) : cc;
}
  • 其七
function maskify(cc) {
      return cc.split('').reduce(function(p, c, i) {
        return i < cc.length - 4 ? p + '#' : p + c;
      }, '');
}

相关文章

网友评论

      本文标题:[7kyu]Credit Card Mask

      本文链接:https://www.haomeiwen.com/subject/ecylhxtx.html