2014-03-05 100 views
0

我有一個函數將數字數組解析爲正確的電話號碼格式的字符串。有沒有什麼辦法來壓縮這個,所以我只需要調用.insert一次?使用.insert與紅寶石陣列

createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) returns "(123) 456-7890") 

def createPhoneNumber(numbers) 
    numbers.insert(6, "-") 
    numbers.insert(0, "(") 
    numbers.insert(4, ")") 
    numbers.insert(5, " ") 
    numbers.join 
end 
+0

這事,如果你有國際用戶即會打破,因爲世界各地的電話號碼長度和格式各不相同。另外,方法名不是camelCase,它們是Ruby中的snake_case,所以使用'create_phone_number'。 –

回答

2
def createPhoneNumber(numbers) 
    "(#{numbers[0..2].join}) #{numbers[3..5].join}-#{numbers[6..9].join}" 
end 

沒有辦法,我能想到的,你會用insert,並用它只有一次。

3

如果你不介意傳遞10個字符的字符串,而不是,你可以做

def createPhoneNumber(p) 
    '(%s) %s-%s' % [p[0,3],p[3,3],p[6,4]]  
end 

例子:

createPhoneNumber('1234567890') # => "(123) 456-7890" 
+0

使用字符串是正確的開始方式。我們經常在美國以「(xxx)xxx-xxxx」格式看到它們,但在其他地方它們會有所不同。即使假設他們是十位數字也是危險的,所以OP將他們的應用程序繪製成以美國爲中心的角落。 –