C# padLeft,不添加填充

标签 c#

我正在编写一种格式化电话号码的方法,如果初始数组中的数字少于 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");
}

关于C# padLeft,不添加填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46280039/

相关文章:

c# - 如果任务等待某事,则任务状态更改为 RanToCompletion

c# - .NET 文件访问冲突

c# - Windows 10 最大路径长度限制

c# - 使用 FindControl 填充文本框

c# - 索引 0 为负数或高于行数

c# - 为什么发布到此 ASP.net MVC 发布到 Controller 会导致空模型?

c# - 数据库连接 InfoMessage 回调不会立即触发存储过程打印语句

c# - 断言该值等于预期值集合中的任何一个

c# - 在 Azure Functions 中修改 CosmosDb 文档会触发无限循环

C# Serilog 仅在错误后收到电子邮件