今天遇到一个效果,姓名只显示最后一个字,其他文字都换成星号。
要达到的效果如下:
**雪
***易
自己想了下,用正则感觉会很麻烦,可以用截取字符串再替换的方式来弄,随手问了下东哥,get到技能了。
代码如下:
var str = '纳兰雪';
return new Array(str.length).join('*') + str.substr(-1);
这种方法的原理是取最后一个字符,其他的根据字符串长度生成对应的*个数。通过new Array(str.length).join('*')获得元素的间隔,然后拼接这些间隔,拼出来的刚好是少一个字符,再加上截取的最后一个字符。
另一种方法:
晚上,东神又写了个正则发给我,这家伙这么吊,蘑菇街还不要,面试的真是瞎眼了啊!!!
'wuhaidong很牛逼的'.replace(/.(?=.)/g, '*');
这里主要用的是正则的(?=pattern),这东西还真没用过,平时看手册都不会去注意,原来这么有用的。可以理解为不占匹配位,不占匹配位就不会替换。感觉自己发现新大陆了,自己的代码格式那个code.js之前有些问题没法处理,似乎可以解决了。
本文地址:http://blog.mingsixue.com/effect/js-name-to-asterisk.html
文章若需转载,请附上原文链接,谢谢配合。^_^