为数字千分位加点 -- Web前端面试经验
2015-04-19 09:02
337 查看
这道题目的题干是:
给一个字符串数字,让你在它的千分位加点。
题目很简单,很多人可能很快就能想出来答案,我也是的:
将字符串从右往左读,读入一个新的字符串,读三个,如果下一个还有数字,放一个“,”。然后就跟面试官说了。
答案我先不揭晓,请读者先自己想想看:会不会有坑?有哪些隐形的需求要考虑到?字符串处理能不能用RegExp?
。。。。。。。。。
好,如果读者想完了,就往下看吧。
这儿有3个隐性的需求
1,确定是数字(用isNaN来判断)
2,考虑负数情况
3,考虑小数的情况
所以面试大公司,很注重的是你的思维严密性
下面给读者一个用正则处理的方法
给一个字符串数字,让你在它的千分位加点。
题目很简单,很多人可能很快就能想出来答案,我也是的:
将字符串从右往左读,读入一个新的字符串,读三个,如果下一个还有数字,放一个“,”。然后就跟面试官说了。
答案我先不揭晓,请读者先自己想想看:会不会有坑?有哪些隐形的需求要考虑到?字符串处理能不能用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]);
相关文章推荐
- 这篇文章挺有意思 关于如何自学web前端以及一些面试的经验分享
- web设计前端面试经 给刚毕业的同学一些经验 izank 赞客
- 【Web前端开发】面试经验分享(应届生)
- 新浪web前端面试经验
- WEB前端面试
- Web前端面试指导(二):编写简历,吃透简历内容
- 2016年Web前端面试题目汇总
- 20170925-浅谈第二阶段Javaweb的学习以及两次公司笔试面试的经验(二)
- web前端面试知识点总结(1)
- 前端面试经验总结
- Web前端面试指导(二十八):什么是闭包,为什么要用它?
- Web前端面试指导(三十二):同步和异步有什么区别?
- 腾讯前端面试经验(一)
- web前端面试题目
- Web前端面试问题汇总
- Web前端面试指导(一):写好简历是面试成功的第一步
- Web前端面试题目及答案汇总
- web 前端面试注意
- web前端开发工程师面试技巧自我总结
- web前端面试-------javaScript基础知识点之数据类型