为数字千分位加点 -- Web前端面试经验

这道题目的题干是:

给一个字符串数字,让你在它的千分位加点。

题目很简单,很多人可能很快就能想出来答案,我也是的:
将字符串从右往左读,读入一个新的字符串,读三个,如果下一个还有数字,放一个“,”。然后就跟面试官说了。

答案我先不揭晓,请读者先自己想想看:会不会有坑?有哪些隐形的需求要考虑到?字符串处理能不能用RegExp?

。。。。。。。。。

好,如果读者想完了,就往下看吧。
这儿有3个隐性的需求
1,确定是数字(用isNaN来判断)
2,考虑负数情况
3,考虑小数的情况

所以面试大公司,很注重的是你的思维严密性

下面给读者一个用正则处理的方法

var string=  "12311341234234.123";
var temp = string.split('.');//考虑小数
var toDo;//用来读取整数部分
if(temp.length==2)
    //如果是小数
    toDo = temp[0];
else
    //如果不是小数
    toDo = temp;

var newOne = "";//当作返回值

/*
/\d{3}$/ 匹配执行匹配操作的字符串最后3位的数字,有点拗口,读两遍就能看懂
*/
while(toDo.match(/\d{3}$/)){
    var mat = toDo.match(/\d{3}$/);
    newOne = newOne.concat(","+mat[0]);
    console.log(newOne);
    toDo = toDo.slice(0,mat.index);
}
newOne = toDo.concat(newOne);
console.log(newOne+"."+temp[1]);
阅读更多
换一批

没有更多推荐了,返回首页