格式化电话号码,以0开头

时间:2017-03-06 21:50:05

标签: c# asp.net

我知道美国的电话号码都不是0。如果有人输入像这样的电话号码0237858585,我想将其格式化为(023)785-8585。

目前,我正在使用PhoneNumberFormatted = $"{int.Parse(PhoneNumber):(###) ###-####}";格式化在上述情况下无效的电话号码。它显示为(23)785-8585

有人可以为此提供帮助吗?

3 个答案:

答案 0 :(得分:3)

正如我在评论中所说,你需要将这些值视为字符串,因为将它们转换为数字会丢失前导零(如果有的话)。

假设您将拥有完全10位数的电话号码,您可以使用以下内容。

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

您可以有条件地使用此逻辑,例如,如果数字以“0”开头,则使用此其他,您可以使用当前正在使用的常规格式。

答案 1 :(得分: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"

答案 2 :(得分:1)

试试这个:

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