webrebuild.org第四届年会——金秋四城联动
大白的工作笔记 注册 | 登陆
浏览模式: 标准 | 列表Tag:格式转换

数字国际格式转换

前段时间腾讯招聘,群友去了以后带回来的题目。

把数字格式123456789转换成123,456,789.

由于本人对正则一窍不通,所以根本就想不到用正则去处理这个问题,于是用的是分割字符串的办法。

 

JavaScript代码
  1. <script>   
  2. function changeNumber(number,end){   
  3.     number +=  "" //转换成字符串   
  4.     var numberL = number.length;  //获取数据长度   
  5.     //长度小于3的直接输出不需要加千分号   
  6.     if(numberL <= 3){   
  7.             return (number);   
  8.         }   
  9.     //长度大于3的处理   
  10.     else{   
  11.         var numberArray = [];//定义分割字符数组   
  12.         var remainder = numberL%end; //获取获取数据长度余数,确保分割位数正确   
  13.         //如果有余数 则不能平均格数分配千分符,所以把剩余位数从最前面取出   
  14.         if(remainder){   
  15.         //alert("有余数")   
  16.         var numberPart1 = number.slice(0,remainder);  //取字符串多余位数   
  17.         var numberPart2 = number.slice(remainder,numberL+1); //剩余的位数正好可以被千分符号 正常隔开   
  18.         }   
  19.         else{   
  20.         //alert("没余数")   
  21.         var numberPart2 = number; //保持数据不变化    
  22.         }   
  23.         //递归截取数据 存入数组 参数为 start开始截取位置 end结束截取位置 cut截取长度    
  24.         function suanfa(start,end,cut){   
  25.             if(end <= numberL ){   
  26.                 numberArray.push(numberPart2.slice(start,end));   
  27.                 suanfa(start+cut,end+cut,cut);   
  28.             }   
  29.         }   
  30.         suanfa(0,end,3);   
  31.         //拼接字符串   
  32.         newNumber = remainder ? numberPart1+","+numberArray.join(","):numberArray.join(",");            
  33.         return(newNumber);   
  34.     }   
  35. }   
  36. </script>  

代码够多的把,能力不行就是没办法。

测试地址:http://dabaii.com/demo/2009/01/index.html

正则的方法:

JavaScript代码
  1. alert("12432423423".replace(/(?=(?!\b)(?:\w{3})+$)/g,","))  

 

不过用js的方法让我也长进了不少,至少很少使用的递归我今天倒是第一次用到了。

Tags: 腾讯面试, 格式转换