2013-10-20 15 views
2

我一直在用电话号码创建者功能玩转。它看起来像从种子号码创建电话号码

createPhoneNumber(1) -- would return (000)000-0001 
createPhoneNumber(5901) -- would return (000)000-5901 
createPhoneNumber(18883141) -- would return (001)888-3141 

function createPhoneNumber(number) { 

//return properly formatted phone number 

} 

我找不出填补具有少于10位数字的数字的逻辑。

+2

你尝试过这么远吗?看起来很简单,就是计算你需要的字符数。 –

+0

可能的重复[是否有JavaScript函数可以填充字符串以达到确定的长度?](http://stackoverflow.com/questions/2686855/is-there-a-javascript-function-that-c​​an- pad-a-string-to-to-a-determined-leng) – Patrick

回答

1

看看这有助于:

function phone(num, format) { 
    var i = format.match(/0/g).length; 
    num = [].slice.call(num).reverse(); 
    return format.replace(/0/g, function() { 
    return num[--i] || 0; 
    }); 
} 

用法:

phone('12345', '(000)000-0000'); //=> (000)001-2345 
phone('123456', '00-000-000'); //=> 00-123-456 
... 
1
function createPhoneNumber(number) { 
    var digitsGiven = number & number.length ? number.length : 0; 
    var digitZeros = 10-digitsGiven; 
    var phoneNumber = '('; 
    for (var i = 0; i < digitZeros.length; i++) { 
     phoneNumber += '0'; 
    } 
    phoneNumber += number; 
    phoneNumber = phoneNumber.substr(0, 4) + ')' + phoneNumber.substr(4); 
    phoneNumber = phoneNumber.substr(0, 8) + '-' + phoneNumber.substr(8); 
    return phoneNumber; 
} 
+1

在第5行中,不应该是i ++而不是i-- –

+0

@AmrGawish是的,谢谢,纠正。 – danludwig

0

你想str_pad

pn(1); 
pn(5901); 
pn(18883141); 

function pn($num) 
{ 
    $pad = str_pad($num, 10, '0', STR_PAD_LEFT); 
    return '('.substr($pad, 0, 3).')'.substr($pad, 3, 3).'-'.substr($pad, 6, 4); 
} 
+0

错误的语言。 – elclanrs