Hi

Am writing some code for which takes down new members information and creates them a username etc. It's all gone well apart from one bit of coding that i am having trouble with.

When a user types their chosen password in, say....STEVEN.....then on the summary page at the end i want it to show S****N as the password.

My code at the moment:

secpass = (password.charAt(0) + password.charAt(password.length-1));

Can anyone make any suggestions as to what to add to this so that the letters in the middle of the password are changed to '*'

It's easy to add * inbetween the first and last letter but just cant figure out how to make the amount of * the same as the amount of middle letters.

Any help appreciated.

n33712

Something like the below should do the trick:

function fuzzy(pwd) {
    if(!pwd || pwd.constructor == String || pwd.length < 3)
        return(pwd);
    var arr = pwd.split("");
    return(arr[0] + new Array(arr.length - 1).join('*') + arr[arr.length - 1]);
}
/* OR */
function fuzzy(pwd) {
    if(!pwd || pwd.constructor == String || pwd.length < 3)
        return(pwd);
    return(pwd.replace(/(.)(.*)(.)/, function(a, b, c, d) { 
           return(b+ c.replace(/./g, "*") + d); }));
}

Hi

Thanks very much for the help. While i am sure this works and i can just about understand what it's doing (beginner) is there a simpler way of doing this?

Cheers

p.s. is it possible using count?

The first method I posted is pretty simple, it just uses some basic array and string operations. Read the javascript String and Array object documentation and get back if you have any more queries.

This article has been dead for over six months. Start a new discussion instead.