Как отформатировать строку как номер телефона в C #

У вас есть файл email.php в папке конфигурации? Возможно, в вашей конфигурации есть проблема.

147
задан Kara 29 August 2014 в 20:54
поделиться

7 ответов

Используйте Соответствие в Regex, чтобы разделить, затем произвести отформатированную строку с match.groups

Regex regex = new Regex(@"(?<first3chr>\d{3})(?<next3chr>\d{3})(?<next4chr>\d{4})");
Match match = regex.Match(phone);
if (match.Success) return "(" + match.Groups["first3chr"].ToString() + ")" + " " + 
  match.Groups["next3chr"].ToString() + "-" + match.Groups["next4chr"].ToString();
2
ответ дан Sathyajith Bhat 29 August 2014 в 20:54
поделиться

Если можно добраться i["MyPhone"] как long, можно использовать long.ToString() метод для форматирования его:

Convert.ToLong(i["MyPhone"]).ToString("###-###-####");

Посмотрите страницу MSDN на Строки Числового формата .

Стараться использовать долго, а не интервал: интервал мог переполниться.

14
ответ дан Joel Coehoorn 29 August 2014 в 20:54
поделиться

Отметьте, этот ответ работы с типами числовых данных (интервал, долго). Если Вы запустите со строки, необходимо будет преобразовать ее в число сначала. Кроме того, примите во внимание, что необходимо будет проверить это, начальная строка является по крайней мере 10 символами в длине.

От хорошая страница , полная примеров:

String.Format("{0:(###) ###-####}", 8005551212);

    This will output "(800) 555-1212".

, Хотя regex может работать еще лучше, имейте в виду старую кавычку программирования:

Некоторые люди, когда столкнуто с проблемой, думают, что “I знают, I’ll используют регулярные выражения. ” Теперь у них есть две проблемы.
- Jamie Zawinski, в comp.lang.emacs

187
ответ дан Zoey M 29 August 2014 в 20:54
поделиться

Я предпочитаю использовать регулярные выражения:

Regex.Replace("1112224444", @"(\d{3})(\d{3})(\d{4})", "$1-$2-$3");
163
ответ дан Ryan Duffield 29 August 2014 в 20:54
поделиться

Необходимо будет повредить его в подстроки. В то время как Вы могли делать это без любых дополнительных переменных, это не было бы особенно хорошо. Вот одно потенциальное решение:

string phone = i["MyPhone"].ToString();
string area = phone.Substring(0, 3);
string major = phone.Substring(3, 3);
string minor = phone.Substring(6);
string formatted = string.Format("{0}-{1}-{2}", area, major, minor);
41
ответ дан Jon Skeet 29 August 2014 в 20:54
поделиться

Насколько я знаю, что Вы не можете сделать этого со строкой. Формат... необходимо было бы обработать это сами. Вы могли просто разделить все нечисловые символы и затем сделать что-то как:

string.Format("({0}) {1}-{2}",
     phoneNumber.Substring(0, 3),
     phoneNumber.Substring(3, 3),
     phoneNumber.Substring(6));

Это предполагает, что данные были введены правильно, который Вы могли использовать регулярные выражения для проверки.

21
ответ дан mattruma 29 August 2014 в 20:54
поделиться
Function FormatPhoneNumber(ByVal myNumber As String)
    Dim mynewNumber As String
    mynewNumber = ""
    myNumber = myNumber.Replace("(", "").Replace(")", "").Replace("-", "")
    If myNumber.Length < 10 Then
        mynewNumber = myNumber
    ElseIf myNumber.Length = 10 Then
        mynewNumber = "(" & myNumber.Substring(0, 3) & ") " &
                myNumber.Substring(3, 3) & "-" & myNumber.Substring(6, 3)
    ElseIf myNumber.Length > 10 Then
        mynewNumber = "(" & myNumber.Substring(0, 3) & ") " &
                myNumber.Substring(3, 3) & "-" & myNumber.Substring(6, 3) & " " &
                myNumber.Substring(10)
    End If
    Return mynewNumber
End Function
3
ответ дан 23 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: