Skip to content
Related Articles
Open in App
Not now

Related Articles

How to replace characters except last with the specified mask character in JavaScript ?

Improve Article
Save Article
  • Last Updated : 30 Dec, 2022
Improve Article
Save Article

In this article, we have given a number and the task is to replace the characters except for the last character with a specified mask character in JavaScript.

Example: Let’s take a number 12345678 and the masking character is * and the number of the last element that we have to skip is 2 In the below image shows that we skip the last two-element, and we mask another character with ‘*’

Approach 1: We will make one function that can mask the character of the string except for the last element we will give our number as a string.

  • In this function we take three-argument, the first one is a string that we want to mask, the second argument will specify a masked character, and the third is the number of characters that you want to skip
  • We use some inbuilt JavaScript function slice to slice our given string here we write slice(0,-n) where -n will skip the last n character of the string.
  • Then we use replace function to replace the character with a specified mask. To replace all characters we use regex /./g where ‘.’ will match any character and g is tens for globally.
  • Now we have to add the remaining character into the masking string, so we again use the slice function to get the remaining n character and add it into the masking string.

Example: This example shows the above-explained approach.

Javascript




<script>
    // Function for masking the character 
    function MaskCharacter(str, mask, n = 1) {
      
        // Slice the string and replace with
        // mask then add remaining string
        return ('' + str).slice(0, -n)
            .replace(/./g, mask)
            + ('' + str).slice(-n);
    }
      
    // Number that we want to mask 
    var num = 12345678;
      
    // Convert number into string
    var str = num.toString();
      
    // Call function without giving value of n
    console.log(MaskCharacter(str, '#'));
      
    // Call function with value of n
    console.log(MaskCharacter(str, '#', 2));
</script>

Output:

#######8
######78

Approach 2: This task can also be performed with the help of reduce() method. We will make one function that can mask the character of the string except for the last element we will give our number as a string.

  • In this function we take three-argument, the first one is a string that we want to mask, the second argument will specify a masked character, and the third is a number of characters that you want to skip.
  • Spread string into an array of characters and use reduce function on the array which checks whether the index of the element is less than the number of characters we want to skip or not.
  • If the index is less than the number then add a mask to the result else add a character to the result and at last return ans. 

Example: This example shows the above-explained approach.

Javascript




<script>
    // Function for masking the character
    function MaskCharacter(str, mask, n = 1) {
          
        // Slice the string and replace with
        // mask then add remaining string
        return [...str].reduce((acc, x, i) =>
                    (i < str.length - n) ? acc+mask : acc+x , '');
    }
      
    // Number that we want to mask
    var num = 12345678;
      
    // Convert number into string
    var str = num.toString();
      
    // Call function without giving value of n
    console.log(MaskCharacter(str, '#'));
      
    // Call function with value of n
    console.log(MaskCharacter(str, '#', 2));
      
</script>

Output:

#######8
######78

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!