为数字千分位加点 -- 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]);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值