diff --git a/README.md b/README.md index a947dfa90..fedb572fc 100644 --- a/README.md +++ b/README.md @@ -7584,14 +7584,12 @@ mapString('lorem ipsum', c => c.toUpperCase()); // 'LOREM IPSUM' Replaces all but the last `num` of characters with the specified mask character. -Use `String.slice()` to grab the portion of the characters that need to be masked and use `String.replace()` with a regexp to replace every character with the mask character. -Concatenate the masked characters with the remaining unmasked portion of the string. +Use `String.slice()` to grab the portion of the characters that will remain unmasked and use `String.padStart()` to fill the beginning of the string with the mask character up to the original length. Omit the second argument, `num`, to keep a default of `4` characters unmasked. If `num` is negative, the unmasked characters will be at the start of the string. Omit the third argument, `mask`, to use a default character of `'*'` for the mask. ```js -const mask = (cc, num = 4, mask = '*') => - ('' + cc).slice(0, -num).replace(/./g, mask) + ('' + cc).slice(-num); +const mask = (cc, num = 4, mask = '*') => `${cc}`.slice(-num).padStart(`${cc}`.length, mask); ```
diff --git a/docs/string.html b/docs/string.html index eb37b07a6..9602c7e76 100644 --- a/docs/string.html +++ b/docs/string.html @@ -158,8 +158,7 @@ .map((c, i) => fn(c, i, str)) .join('');
mapString('lorem ipsum', c => c.toUpperCase()); // 'LOREM IPSUM'
-

mask

Replaces all but the last num of characters with the specified mask character.

Use String.slice() to grab the portion of the characters that need to be masked and use String.replace() with a regexp to replace every character with the mask character. Concatenate the masked characters with the remaining unmasked portion of the string. Omit the second argument, num, to keep a default of 4 characters unmasked. If num is negative, the unmasked characters will be at the start of the string. Omit the third argument, mask, to use a default character of '*' for the mask.

const mask = (cc, num = 4, mask = '*') =>
-  ('' + cc).slice(0, -num).replace(/./g, mask) + ('' + cc).slice(-num);
+

mask

Replaces all but the last num of characters with the specified mask character.

Use String.slice() to grab the portion of the characters that will remain unmasked and use String.padStart() to fill the beginning of the string with the mask character up to the original length. Omit the second argument, num, to keep a default of 4 characters unmasked. If num is negative, the unmasked characters will be at the start of the string. Omit the third argument, mask, to use a default character of '*' for the mask.

const mask = (cc, num = 4, mask = '*') => `${cc}`.slice(-num).padStart(`${cc}`.length, mask);
 
mask(1234567890); // '******7890'
 mask(1234567890, 3); // '*******890'
 mask(1234567890, -4, '$'); // '$$$$567890'