屏蔽字符串

Masking a string

我需要以这种格式放置接收到的字符串:

"## ## ## ###" 在 typescript/javascript

例如:

"12 34 56 789"

我知道有 string-mask 和一些通过 JQuery 的方法,有更简单的方法吗?

您可以用想要的数据替换每个模式部分。

function format(value, pattern) {
    let i = 0;
    const v = value.toString();
    return pattern.replace(/#/g, _ => v[i++]);
}

console.log(format(123456789, '## ## ## ###'));

我需要一个从字符串的开头或结尾用“*”屏蔽任何字符的方法,所以我写了以下内容:

"use strict";

module.exports = {
  /**
   * @param {string} str
   * @param {string} maskChar
   * @param {number} unmaskedLength
   * @param {boolean} [maskFromStart]
   * @returns {string}
   */
  mask(str, maskChar, unmaskedLength, maskFromStart = true) {
    const maskStart = maskFromStart ? 0 : Math.max(0, unmaskedLength);
    const maskEnd = maskFromStart ? Math.max(0, str.length - unmaskedLength) : str.length;
    return str
      .split("")
      .map((char, index) => {
        if (index >= maskStart && index < maskEnd) {
          return maskChar;
        }
        else {
          return char;
        }
      })
      .join("");
  },
};

对我有用的格式 xxx-xxx-xxxx with keyup event

stringOnKeyUp.replace(/^(\d{3})$/g, '-').replace(/^(\d{3}-\d{3})$/g, '-');