簡體   English   中英

C#padLeft,不添加墊

[英]C# padLeft, not adding pad

我正在編寫一種格式化電話號碼的方法,如果初始數組中的數字少於10位,也會在開頭添加填充。 我只是輸入少於10位數的用例,我的方法顯然沒有添加填充。 最常見的錯誤是使用錯誤的padcount參數。 我確信我錯過了一些簡單的事情。

public static string CreatePhoneNumber(int[] numbers)
  {
    string numbas = string.Join("", numbers);

    string ammendNumbas = numbas;

    char pad = '0';

    if ( numbas.Length < 10) 
    {
        ammendNumbas = numbas.PadLeft(10, pad);
    }

    string formatString = "(###) ###-####";
    var returnValue = Convert.ToInt64(ammendNumbas)
                 .ToString(formatString.Substring(0,ammendNumbas.Length+4))
                 .Trim();
     return returnValue;
  }

當您使用Convert.ToInt64時,您將刪除所有填充,因為填充只能應用於字符串。 應用填充后,您不需要將值轉換回整數。

我想你想要的是這個:

public static string CreatePhoneNumber(int[] numbers)
{
   Int64 numbas = Convert.ToInt64(string.Join("", numbers));
   return numbas.ToString("(000) 000-0000");
}

BlueMonk說的是正確的,但你可以使用String.Format進行填充

  public static string CreatePhoneNumber(int[] numbers)
  {
      string phoneNumberStr = string.Join("", numbers);

      var phoneNumber = Convert.ToInt64(phoneNumberStr);

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

這沒有經過測試但應該有效。

當您調用Convert.ToInt64 ,前導零的信息將丟失。 您可以使用填充字符串表示的子字符串來提取數字組:

public static string CreatePhoneNumber(int[] numbers)
{
    var numberString = string.Join("", numbers);
    var paddedNumbers = numberString.PadLeft(10, '0');
    return $"({paddedNumbers.Substring(0, 3)}) {paddedNumbers.Substring(3, 3)}-{paddedNumbers.Substring(6)}";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM