2017-03-06 100 views
0

我知道在美國沒有任何電話號碼以0開頭。如果有人輸入像這樣的電話號碼0237858585我想將其格式設置爲(023)785-8585。格式電話號碼,從0開始

當前我使用PhoneNumberFormatted = $"{int.Parse(PhoneNumber):(###) ###-####}";來格式化在上述情況下不起作用的電話號碼。它顯示爲(23)785-8585

有人可以幫助嗎?

+0

http://stackoverflow.com/questions/679740/fastest-way-to-format-a-phone-number-in-c 試試這一個 –

+3

您需要將此值視爲一個字符串。不是一個數字。由於前導零的數字沒有價值,因此當您將其轉換爲數字時,前導零將被肯定刪除。 –

+0

@JonathanSchmold這對於以'0'開頭的號碼沒有幫助 – user7031310

回答

4

正如我在評論中所說,你需要考慮像字符串這樣的值,如果將它們轉換爲數字將會丟失前導零(如果有的話)。

假設您將擁有可以使用的精確10位數的電話號碼。

var phoneNumber = "0237858585"; 
var formattedNumber = $"({phoneNumber.Substring(0,3)}) {phoneNumber.Substring(3,3)}-{phoneNumber.Substring(6)}"; 
Console.WriteLine(formattedNumber); 

可以有條件地使用這個邏輯,如果像數字「0」開始,然後使用這個否則你可以使用你正在使用當前正常的格式。

+0

你是Mr. Perfect。這在格式中處理'0'。 – user7031310

1

格式化數字時,使用「#」將丟棄前導零。如果要保留前導零,請使用「0」作爲可能爲零的前導數字的佔位符。

注意:「0」表示顯示數字,如果有的話,否則顯示「0」。這並不意味着在字符串的開頭放置一個字面值「0」。

var PhoneNumber = "0237858585"; 
Console.WriteLine($"{int.Parse(PhoneNumber):(0##) ###-####}"); 
//Output will be "(023) 785-8585" 

PhoneNumber = "237858585"; 
Console.WriteLine($"{int.Parse(PhoneNumber):(0##) ###-####}"); 
//Output will be "(023) 785-8585" 

PhoneNumber = "1237858585"; 
Console.WriteLine($"{int.Parse(PhoneNumber):(0##) ###-####}"); 
//Output will be "(123) 785-8585" 

PhoneNumber = "1237858585"; 
Console.WriteLine($"{int.Parse(PhoneNumber):(000) 000-0000}"); 
//Output will be "(123) 785-8585" 
+0

你怎麼知道有多少前導零填充?如果所有OP想要做的是格式_this_數字,爲什麼不使用const字符串? – Basic

+0

@Marc - 我剛纔告訴過,如果它以'0'開頭,並不總是。 – user7031310

+0

@ user7031310您可以將所有「#」替換爲「0」。格式字符串可以是「(000)000-000」。格式字符串中的「0」並不意味着它是一個文字「0」。這意味着如果沒有數字,它就是一個有0佔位符的數字。 – Marc

1

試試這個:

String.Format("{0:(0##) ###-####}", 237858585); // Displays (023) 785-8585