Я пытаюсь отформатировать телефонные номера.Возможно, мой подход не самый лучший, но он работает, за исключением некоторого неожиданного поведения.Я использую string.length в операторе if, чтобы узнать, больше ли длина телефонного номера (хранится в виде строки), чем 9. Я также попытался> = 10 вместо> 9 с теми же результатами.Все отлично работает с 18001234567 или 7041234567. Я получаю (800) 123-4567 или (704) 123-4567.Но с 828464047 я получаю (82) 846-4047, а не просто возвращаемое число как есть.
try
{
if (ANI.Length > 9)
{
char[] Number1 = { '1' };
ANI = ANI.TrimStart(Number1);
return String.Format("{0:(###) ###-####}", Convert.ToDouble(ANI));
}
else if (ANI == "")
{
return "Private";
}
else
{
return ANI;
}
}
catch (Exception ex)
{
return ex.Message;
}
Есть идеи?Есть ли лучший способ приблизиться к этому?
Спасибо.
Если я изменю код, который форматирует телефонный номер, чтобы использовать подстроки, все обернется, как и ожидалось.
return "(" + ANI.Substring(0, 3) + ") " + ANI.Substring(3, 3) + "-" + ANI.Substring(6, 4);
Возникло исключение, и "Индекс и длина должны указывать на местоположение в строке. Имя параметра: длина" возвращается.