Cách định dạng chuỗi dưới dạng số điện thoại trong C #


163

Tôi có một chuỗi "1112224444 'đó là số điện thoại. Tôi muốn định dạng là 111-222-4444 trước khi tôi lưu trữ nó trong một tệp. Nó nằm trên một datarecord và tôi muốn có thể làm điều này mà không cần gán mới Biến đổi.

Tôi đã suy nghĩ:

String.Format("{0:###-###-####}", i["MyPhone"].ToString() );

nhưng điều đó dường như không phải là một mẹo.

** CẬP NHẬT **

Đồng ý. Tôi đã đi với giải pháp này

Convert.ToInt64(i["Customer Phone"]).ToString("###-###-#### ####")

Bây giờ nó bị rối khi phần mở rộng dưới 4 chữ số. Nó sẽ điền vào các số từ bên phải. vì thế

1112224444 333  becomes

11-221-244 3334

Có ý kiến ​​gì không?


5
Xin lưu ý rằng không phải nơi nào cũng có số điện thoại 10 chữ số hoặc sử dụng định dạng 111-222-4444.
Dour High Arch

Điều này sẽ thất bại với các số điện thoại bắt đầu bằng 0
dano 17/11/11

Bạn nên xác định xem đây có phải là số Bắc Mỹ hay không.
Armstrongest

CẢNH BÁO: Toàn bộ chủ đề giả định số điện thoại Bắc Mỹ. Sử dụng một thư viện hỗ trợ số quốc tế. nuget.org/packages/libphonenumber-csharp
Sean Anderson

Câu trả lời:


204

Xin lưu ý, câu trả lời này hoạt động với các loại dữ liệu số (int, long). Nếu bạn đang bắt đầu với một chuỗi, trước tiên bạn cần chuyển đổi nó thành một số. Ngoài ra, vui lòng lưu ý rằng bạn sẽ cần xác thực rằng chuỗi ban đầu có độ dài ít nhất 10 ký tự.

Từ một trang tốt có đầy đủ các ví dụ:

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

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

Mặc dù regex có thể hoạt động tốt hơn nữa, hãy ghi nhớ trích dẫn lập trình cũ:

Một số người, khi gặp vấn đề, nghĩ rằng tôi biết, tôi sẽ sử dụng các biểu thức thông thường. Bây giờ họ có hai vấn đề.
--Jamie Zawinski, trong comp.lang.emacs


Điều gì xảy ra, giả sử nếu số điện thoại bị thiếu vài chữ số - chỉ như "800555"? Có cách nào để chỉ hiển thị những gì hiện diện ở đó không?
VoodooChild

11
Đây là một triển khai không tốt bởi vì nếu mã vùng bắt đầu bằng 0105555555 hoặc đại loại như thế thì cuối cùng bạn sẽ quay lại (01) 555-5555 thay vì (010) 555-5555. Lý do là nếu bạn chuyển đổi số điện thoại thành một số thì số 0 ở phía trước được coi là không phải là bất cứ thứ gì và khi bạn định dạng thì số 0 đầu tiên sẽ bị loại bỏ.
Paul Mendoza

3
@Paul Vui lòng đọc định nghĩa vấn đề: "Tôi có một chuỗi" 1112224444 'đó là số điện thoại. Tôi muốn định dạng là 111-222-4444 trước khi tôi lưu trữ nó trong một tệp ".
Sean

39
Điều này sẽ không hoạt động nếu số điện thoại của bạn là một chuỗi, như các câu hỏi nêu, trừ khi bạn chuyển đổi nó thành một giá trị số trước tiên.
JustinStolle

4
Tôi biết điều này chỉ lặp lại nhận xét ở trên, nhưng câu trả lời này đã không trả lời câu hỏi. Làm thế nào để bạn định dạng một chuỗi thành một định dạng cụ thể, trong trường hợp này là định dạng số điện thoại.
chứng khó đọc

168

Tôi thích sử dụng các biểu thức thông thường:

Regex.Replace("1112224444", @"(\d{3})(\d{3})(\d{4})", "$1-$2-$3");

4
Tôi cho rằng điều này sẽ hoạt động, nhưng định dạng .ToString () dễ đọc hơn và sẽ hoạt động tốt hơn.
Joel Coehoorn

14
Nếu tôi đang xử lý một chuỗi, như người đăng đã nói, việc kéo nó thành một chuỗi dài và trở lại có vẻ ngớ ngẩn.
Ryan Duffield

Có lẽ đây là những gì tôi cần sau tất cả. có thể xử lý tiện ích mở rộng tốt hơn
Brian G

5
+1 để giữ số dưới dạng chuỗi (cho rằng thường số điện thoại được sử dụng cho các hệ thống SMS tự động phải được lưu trữ ở định dạng +44)
Ed James

3
Tôi đang làm việc với các định dạng khác nhau (ví dụ (111) 222-4444, 111.222.4444, v.v.), nhưng cần chúng được chuẩn hóa thành (111) 222-4444. Tôi cũng muốn bảo vệ chống lại các số chưa hoàn thành và sử dụng ký hiệu {n, m} . (Và xin lỗi về định dạng, nhưng một số định dạng MD không hoạt động đối với tôi). // Remove non-digit characters var phoneDigits = Regex.Replace(crewMember.CellPhone, "[^\\d]", string.Empty); // Format the digits var phone = Regex.Replace(phoneDigits, @"(\d{1,3})(\d{0,3})(\d{0,4})", " ($1) $2-$3");
Craig Boland

46

Bạn sẽ cần phải phá vỡ nó thành chuỗi con. Mặc dù bạn có thể làm điều đó mà không có bất kỳ biến số bổ sung nào, nó sẽ không đặc biệt tốt. Đây là một giải pháp tiềm năng:

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);

Jon bạn có chắc chắn làm cho ba chuỗi con tốt hơn so với sử dụng string.format?
Pradeep

Tôi cũng sử dụng String.Format - nhưng làm thế nào bạn đề xuất để đạt được kết quả mà không cần sử dụng String.Format?
Jon Skeet

2
Tôi gói nó trong một if (phone.Length == 10)điều kiện.
Zack Peterson

Điểm cộng một - Một điểm nhỏ: định dạng đó không giống như nó có dấu ngoặc đơn quanh mã vùng, có thể tôi đang đọc sai.
Mark Rogers

1
@MarkRogers: Câu hỏi cho biết "Tôi muốn định dạng là 111-222-4444" - không có dấu ngoặc đơn nào ở đó.
Jon Skeet

28

Tôi đề nghị đây là một giải pháp sạch cho các số của Hoa Kỳ.

public static string PhoneNumber(string value)
{ 
    if (string.IsNullOrEmpty(value)) return string.Empty;
    value = new System.Text.RegularExpressions.Regex(@"\D")
        .Replace(value, string.Empty);
    value = value.TrimStart('1');
    if (value.Length == 7)
        return Convert.ToInt64(value).ToString("###-####");
    if (value.Length == 10)
        return Convert.ToInt64(value).ToString("###-###-####");
    if (value.Length > 10)
        return Convert.ToInt64(value)
            .ToString("###-###-#### " + new String('#', (value.Length - 10)));
    return value;
}

1
Điều này làm việc với tôi với ngoại lệ là tôi phải thêm một kiểm tra để đảm bảo giá trị điện thoại không phải là NULL hoặc Whitespace trước.
Caverman

1
Điều này làm việc cho tôi sau tất cả những điều tôi đã thử
Eliotjse

22

Theo như tôi biết bạn không thể làm điều này với chuỗi.Format ... bạn sẽ phải tự xử lý việc này. Bạn chỉ có thể loại bỏ tất cả các ký tự không phải là số và sau đó làm một cái gì đó như:

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

Điều này giả sử dữ liệu đã được nhập chính xác, bạn có thể sử dụng các biểu thức chính quy để xác thực.


4
Và nó giả sử một số điện thoại Bắc Mỹ
chris

19

Điều này sẽ làm việc:

String.Format("{0:(###)###-####}", Convert.ToInt64("1112224444"));

HOẶC trong trường hợp của bạn:

String.Format("{0:###-###-####}", Convert.ToInt64("1112224444"));

3
1 vấn đề nhỏ nếu tôi đang sử dụng 01213456789, nó tạo ra (12) 345-6789 ... bất kỳ giải pháp nào ...?
Sangram Nandkhile

5
Đây là giải pháp tốt nhất. Số 0 đứng đầu là về số điện thoại của Mỹ vì không có mã vùng của Mỹ bắt đầu bằng 0 hoặc một.
JB

Vấn đề nhỏ nếu tôi đã thử 12345678 nó định dạng (1) 234-5678 ... Nhưng cái tôi cần là (123) 456-78. Có giải pháp nào cho điều này? Cảm ơn
Kavitha P.

14

Nếu bạn có thể lấy i["MyPhone"]như một long, bạn có thể sử dụng long.ToString()phương thức để định dạng nó:

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

Xem trang MSDN trên Chuỗi định dạng số .

Hãy cẩn thận để sử dụng lâu hơn là int: int có thể tràn.


1
Vấn đề với điều này là nếu số lượng dài> 10 ký tự (nghĩa là bao gồm một phần mở rộng). Điều này dẫn đến một đại diện rất kỳ quặc trong đó 212-555-1212 x1234 xuất hiện dưới dạng2125551-212-1234.
Michael Blackburn

5
static string FormatPhoneNumber( string phoneNumber ) {

   if ( String.IsNullOrEmpty(phoneNumber) )
      return phoneNumber;

   Regex phoneParser = null;
   string format     = "";

   switch( phoneNumber.Length ) {

      case 5 :
         phoneParser = new Regex(@"(\d{3})(\d{2})");
         format      = "$1 $2";
       break;

      case 6 :
         phoneParser = new Regex(@"(\d{2})(\d{2})(\d{2})");
         format      = "$1 $2 $3";
       break;

      case 7 :
         phoneParser = new Regex(@"(\d{3})(\d{2})(\d{2})");
         format      = "$1 $2 $3";
       break;

      case 8 :
         phoneParser = new Regex(@"(\d{4})(\d{2})(\d{2})");
         format      = "$1 $2 $3";
       break;

      case 9 :
         phoneParser = new Regex(@"(\d{4})(\d{3})(\d{2})(\d{2})");
         format      = "$1 $2 $3 $4";
       break;

      case 10 :
         phoneParser = new Regex(@"(\d{3})(\d{3})(\d{2})(\d{2})");
         format      = "$1 $2 $3 $4";
       break;

      case 11 :
         phoneParser = new Regex(@"(\d{4})(\d{3})(\d{2})(\d{2})");
         format      = "$1 $2 $3 $4";
       break;

      default:
        return phoneNumber;

   }//switch

   return phoneParser.Replace( phoneNumber, format );

}//FormatPhoneNumber

    enter code here

đầu vào: 1234567890 đầu ra: 123 456 78 90 không hoạt động
MC9000

5

Nếu bạn đang tìm kiếm một số điện thoại (Mỹ) để được chuyển đổi trong thời gian thực. Tôi đề nghị sử dụng phần mở rộng này. Phương pháp này hoạt động hoàn hảo mà không cần điền số ngược. Các String.Formatgiải pháp dường như làm việc ngược. Chỉ cần áp dụng phần mở rộng này cho chuỗi của bạn.

public static string PhoneNumberFormatter(this string value)
{
    value = new Regex(@"\D").Replace(value, string.Empty);
    value = value.TrimStart('1');

    if (value.Length == 0)
        value = string.Empty;
    else if (value.Length < 3)
        value = string.Format("({0})", value.Substring(0, value.Length));
    else if (value.Length < 7)
        value = string.Format("({0}) {1}", value.Substring(0, 3), value.Substring(3, value.Length - 3));
    else if (value.Length < 11)
        value = string.Format("({0}) {1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
    else if (value.Length > 10)
    {
        value = value.Remove(value.Length - 1, 1);
        value = string.Format("({0}) {1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
    }
    return value;
}

Hoạt động hoàn hảo cho chuyển động về phía trước. Nhưng khi quay lại, nó bị kẹt ở định dạng đầu tiên của (###).
Schwagmister

@Schwagmister Bắt tốt. Điều này đã được sửa chữa và tôi đã tái cấu trúc mã thành một phần mở rộng để sử dụng chung.
James Copeland

4

Bạn cũng có thể thử điều này:

  public string GetFormattedPhoneNumber(string phone)
        {
            if (phone != null && phone.Trim().Length == 10)
                return string.Format("({0}) {1}-{2}", phone.Substring(0, 3), phone.Substring(3, 3), phone.Substring(6, 4));
                return phone;
        }

Đầu ra:

nhập mô tả hình ảnh ở đây


1
Xin lưu ý rằng các quốc gia khác nhau có các định dạng và độ dài khác nhau của số điện thoại và mọi người sẽ không thể nhập chúng.
Neme

Làm cách nào để sử dụng cái này với Html.DisplayFor (model => model.PhoneNumber)?
JustJohn

Tôi đã sử dụng cái này và tìm ra cách sử dụng nó trong màn hình Trang cạo. Tôi đặt nó trong một khối @fifts {} ở đầu trang. Sau đó, tôi đã thoát khỏi trình trợ giúp @ Html.DisplayFor và chỉ tham chiếu chức năng: ................. @GetFormattedPhoneNumber (Model.Cifts_New.CiverseContactPhone) Làm cho tôi một ngày!
JustJohn 20/07/19

4

Bạn có thể thấy mình trong tình huống có người dùng đang cố nhập số điện thoại với tất cả các loại dấu phân cách giữa mã vùng và khối số chính (ví dụ: dấu cách, dấu gạch ngang, dấu chấm, ect ...) Vì vậy, bạn sẽ muốn tước đầu vào của tất cả các ký tự không phải là số để bạn có thể khử trùng đầu vào bạn đang làm việc. Cách dễ nhất để làm điều này là với biểu thức RegEx.

string formattedPhoneNumber = new System.Text.RegularExpressions.Regex(@"\D")
    .Replace(originalPhoneNumber, string.Empty);

Sau đó, câu trả lời bạn đã liệt kê nên hoạt động trong hầu hết các trường hợp.

Để trả lời những gì bạn có về vấn đề tiện ích mở rộng của mình, bạn có thể loại bỏ bất cứ thứ gì dài hơn độ dài dự kiến ​​là mười (đối với số điện thoại thông thường) và thêm nó vào cuối bằng cách sử dụng

formattedPhoneNumber = Convert.ToInt64(formattedPhoneNumber)
     .ToString("###-###-#### " + new String('#', (value.Length - 10)));

Bạn sẽ muốn thực hiện kiểm tra 'nếu' để xác định xem độ dài của đầu vào của bạn có lớn hơn 10 hay không trước khi thực hiện việc này, nếu không, chỉ cần sử dụng:

formattedPhoneNumber = Convert.ToInt64(value).ToString("###-###-####");

3
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

Bỏ phiếu nhưng ... Đây là câu trả lời của vb.net và câu hỏi là c #

đầu vào: 1234567890 đầu ra: (123) 456-789 Không hoạt động!
MC9000

3
        string phoneNum;
        string phoneFormat = "0#-###-###-####";
        phoneNum = Convert.ToInt64("011234567891").ToString(phoneFormat);

2

Thử cái này

string result;
if ( (!string.IsNullOrEmpty(phoneNumber)) && (phoneNumber.Length >= 10 ) )
    result = string.Format("{0:(###)###-"+new string('#',phoneNumber.Length-6)+"}",
    Convert.ToInt64(phoneNumber)
    );
else
    result = phoneNumber;
return result;

Chúc mừng.


2

Sử dụng Match trong Regex để phân tách, sau đó xuất chuỗi được định dạng bằng 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

Sau đây sẽ làm việc với việc sử dụng biểu thức chính quy

string primaryContactNumber = !string.IsNullOrEmpty(formData.Profile.Phone) ? String.Format("{0:###-###-####}", long.Parse(formData.Profile.Phone)) : "";

Nếu chúng tôi không sử dụng long.Pude, chuỗi.format sẽ không hoạt động.


1
public string phoneformat(string phnumber)
{
String phone=phnumber;
string countrycode = phone.Substring(0, 3); 
string Areacode = phone.Substring(3, 3); 
string number = phone.Substring(6,phone.Length); 

phnumber="("+countrycode+")" +Areacode+"-" +number ;

return phnumber;
}

Đầu ra sẽ là: 001-568-895623


1

Vui lòng sử dụng liên kết sau cho C # http://www.beansoftware.com/NET-Tutorials/format-opes-phone-number.aspx

Cách dễ nhất để làm định dạng là sử dụng Regex.

private string FormatPhoneNumber(string phoneNum)
{
  string phoneFormat = "(###) ###-#### x####";

  Regex regexObj = new Regex(@"[^\d]");
  phoneNum = regexObj.Replace(phoneNum, "");
  if (phoneNum.Length > 0)
  {
    phoneNum = Convert.ToInt64(phoneNum).ToString(phoneFormat);
  }
  return phoneNum;
}

Truyền điện thoại của bạn dưới dạng chuỗi 2021231234 lên đến 15 char.

FormatPhoneNumber(string phoneNum)

Một cách tiếp cận khác là sử dụng Chuỗi con

private string PhoneFormat(string phoneNum)
    {
      int max = 15, min = 10;
      string areaCode = phoneNum.Substring(0, 3);
      string mid = phoneNum.Substring(3, 3);
      string lastFour = phoneNum.Substring(6, 4);
      string extension = phoneNum.Substring(10, phoneNum.Length - min);
      if (phoneNum.Length == min)
      {
        return $"({areaCode}) {mid}-{lastFour}";
      }
      else if (phoneNum.Length > min && phoneNum.Length <= max)
      {
        return $"({areaCode}) {mid}-{lastFour} x{extension}";
      }
      return phoneNum;
    }

0

Để giải quyết vấn đề mở rộng của bạn, làm thế nào về:

string formatString = "###-###-#### ####";
returnValue = Convert.ToInt64(phoneNumber)
                     .ToString(formatString.Substring(0,phoneNumber.Length+3))
                     .Trim();

0

Không làm sống lại một câu hỏi cũ nhưng hình dung tôi có thể cung cấp ít nhất một phương pháp dễ sử dụng hơn một chút, nếu thiết lập phức tạp hơn một chút.

Vì vậy, nếu chúng ta tạo một trình định dạng tùy chỉnh mới, chúng ta có thể sử dụng định dạng đơn giản hơn của string.Format mà không phải chuyển đổi số điện thoại của mình thànhlong

Vì vậy, trước tiên hãy tạo trình định dạng tùy chỉnh:

using System;
using System.Globalization;
using System.Text;

namespace System
{
    /// <summary>
    ///     A formatter that will apply a format to a string of numeric values.
    /// </summary>
    /// <example>
    ///     The following example converts a string of numbers and inserts dashes between them.
    ///     <code>
    /// public class Example
    /// {
    ///      public static void Main()
    ///      {          
    ///          string stringValue = "123456789";
    ///  
    ///          Console.WriteLine(String.Format(new NumericStringFormatter(),
    ///                                          "{0} (formatted: {0:###-##-####})",stringValue));
    ///      }
    ///  }
    ///  //  The example displays the following output:
    ///  //      123456789 (formatted: 123-45-6789)
    ///  </code>
    /// </example>
    public class NumericStringFormatter : IFormatProvider, ICustomFormatter
    {
        /// <summary>
        ///     Converts the value of a specified object to an equivalent string representation using specified format and
        ///     culture-specific formatting information.
        /// </summary>
        /// <param name="format">A format string containing formatting specifications.</param>
        /// <param name="arg">An object to format.</param>
        /// <param name="formatProvider">An object that supplies format information about the current instance.</param>
        /// <returns>
        ///     The string representation of the value of <paramref name="arg" />, formatted as specified by
        ///     <paramref name="format" /> and <paramref name="formatProvider" />.
        /// </returns>
        /// <exception cref="System.NotImplementedException"></exception>
        public string Format(string format, object arg, IFormatProvider formatProvider)
        {
            var strArg = arg as string;

            //  If the arg is not a string then determine if it can be handled by another formatter
            if (strArg == null)
            {
                try
                {
                    return HandleOtherFormats(format, arg);
                }
                catch (FormatException e)
                {
                    throw new FormatException(string.Format("The format of '{0}' is invalid.", format), e);
                }
            }

            // If the format is not set then determine if it can be handled by another formatter
            if (string.IsNullOrEmpty(format))
            {
                try
                {
                    return HandleOtherFormats(format, arg);
                }
                catch (FormatException e)
                {
                    throw new FormatException(string.Format("The format of '{0}' is invalid.", format), e);
                }
            }
            var sb = new StringBuilder();
            var i = 0;

            foreach (var c in format)
            {
                if (c == '#')
                {
                    if (i < strArg.Length)
                    {
                        sb.Append(strArg[i]);
                    }
                    i++;
                }
                else
                {
                    sb.Append(c);
                }
            }

            return sb.ToString();
        }

        /// <summary>
        ///     Returns an object that provides formatting services for the specified type.
        /// </summary>
        /// <param name="formatType">An object that specifies the type of format object to return.</param>
        /// <returns>
        ///     An instance of the object specified by <paramref name="formatType" />, if the
        ///     <see cref="T:System.IFormatProvider" /> implementation can supply that type of object; otherwise, null.
        /// </returns>
        public object GetFormat(Type formatType)
        {
            // Determine whether custom formatting object is requested. 
            return formatType == typeof(ICustomFormatter) ? this : null;
        }

        private string HandleOtherFormats(string format, object arg)
        {
            if (arg is IFormattable)
                return ((IFormattable)arg).ToString(format, CultureInfo.CurrentCulture);
            else if (arg != null)
                return arg.ToString();
            else
                return string.Empty;
        }
    }
}

Vì vậy, nếu bạn muốn sử dụng cái này, bạn sẽ làm một cái gì đó:

String.Format(new NumericStringFormatter(),"{0:###-###-####}", i["MyPhone"].ToString());

Một số điều khác để suy nghĩ về:

Ngay bây giờ nếu bạn đã chỉ định một trình định dạng dài hơn bạn đã tạo một chuỗi để định dạng, nó sẽ chỉ bỏ qua các dấu # bổ sung. Ví dụ nàyString.Format(new NumericStringFormatter(),"{0:###-###-####}", "12345"); sẽ dẫn đến 123-45- vì vậy bạn có thể muốn nó lấy một số loại ký tự phụ có thể có trong hàm tạo.

Ngoài ra, tôi không cung cấp cách thoát dấu # vì vậy nếu bạn muốn đưa nó vào chuỗi đầu ra của mình, bạn sẽ không thể theo cách đó ngay bây giờ.

Lý do tôi thích phương pháp này hơn Regex là tôi thường có yêu cầu cho phép người dùng tự xác định định dạng và tôi dễ dàng giải thích cách sử dụng định dạng này hơn là cố gắng dạy cho người dùng regex.

Ngoài ra, tên lớp là một chút sai lầm vì nó thực sự hoạt động để định dạng bất kỳ chuỗi nào miễn là bạn muốn giữ nó theo cùng một thứ tự và chỉ cần chèn các ký tự bên trong nó.


0

Bạn có thể thử {0: (000) 000 - ####} nếu số mục tiêu của bạn bắt đầu bằng 0.


0

Đây là một cách khác để làm điều đó.

public string formatPhoneNumber(string _phoneNum)
{
    string phoneNum = _phoneNum;
    if (phoneNum == null)
        phoneNum = "";
    phoneNum = phoneNum.PadRight(10 - phoneNum.Length);
    phoneNum = phoneNum.Insert(0, "(").Insert(4,") ").Insert(9,"-");
    return phoneNum;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.