字符串掩碼功能(保留前后部分,中間替換為*)

前兩天工作中遇到個(gè)需求,需要對(duì)字符串進(jìn)行掩碼,字符串長(zhǎng)度不等,需要保留前3位和后6位,中間全部替換為顯示。最開(kāi)始的想法就是截取前3位和后6位字符,中間根據(jù)總長(zhǎng)度減去9的部分全部替換為

方法一:根據(jù)首尾字符截取,然后將中間字符全部替換為*,最后三個(gè)字符拼接

maskString (str, startLength, endLength) {
  if (!str || str.length <= (startLength + endLength)) return str;

  const strLength = str.length;
  const strStart = str.substr(0, startLength);
  const strEnd = str.substr(strLength - endLength, endLength);
  const strMiddle = "*".repeat(strLength - (startLength + endLength)) ;

  return `${strStart}${strMiddle}${strEnd}`;
}

方案二:使用replace和正則表達(dá)式進(jìn)行配合

maskString(str, startLength, endLength) {
  const regexPattern = new RegExp(`^(.{${startLength}})(.*)(.{${endLength}})$`);

  return str.replace(regexPattern, (match, firstLength, middle, lastLength) => {
    const maskedMiddle = '*'.repeat(middle.length);
    return firstLength + maskedMiddle + lastLength;
  });
}

總結(jié):最開(kāi)始的時(shí)候,是直接使用第一種方案(固定寫(xiě)死首尾保留個(gè)數(shù)),然后里面的首尾長(zhǎng)度都固定寫(xiě)死,然后思考了下,這種小需求在項(xiàng)目中可能會(huì)有大量使用,而且首尾保留的位數(shù)還不一定固定,于是稍作優(yōu)化,弄完后,又想著用replace和正則表達(dá)式進(jìn)行處理,于是又弄了第二種方案。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容