【问题标题】:C#: Pad number with 0 from the left until length is X characters?C#:从左边用 0 填充数字直到长度为 X 个字符?
【发布时间】:2021-05-07 08:42:55
【问题描述】:

我正在尝试传递一个带有 0 的数字,直到其 3 个或更多字符。我在下面做了一个不太动态的方法,但我想知道 C# 是否内置了任何东西?

例如,“77”会变成“077”,“6”会变成“006”,“63”会变成“063”

有内置/更好的方法吗?

            _totalSupplierCount = GetTotalSupplierNumberForInvoices().ToString().Left<double>(3);

            _totalSupplierCountStr = _totalSupplierCount.ToString();

            if (_totalSupplierCountStr.Length == 2)
            {
                _totalSupplierCountStr = "0" + _totalSupplierCountStr;
            }

            if (_totalSupplierCountStr.Length == 1)
            {
                _totalSupplierCountStr = "000" + _totalSupplierCountStr;
            }

【问题讨论】:

标签: c#


【解决方案1】:

查看Standard numeric format strings 上的页面,尤其是"D" specifier

精度说明符指示结果字符串中所需的最小位数。如果需要,数字会在其左侧填充零,以生成精度说明符给出的位数。

这意味着您可以更改您的 ToString() 呼叫以使用“D3”格式,该格式将根据需要使用 0 填充最多 3 位数字:

int totalSupplierCount = 3;
string totalSupplierCountStr = totalSupplierCount.ToString("D3");

您可能更喜欢使用稍短的:

string totalSupplierCountStr = $"{totalSupplierCount:D3}";

【讨论】:

    【解决方案2】:

    是的,有更好的方法。您可以重复 0 字符3 - your_string_length 次。

    为了避免任何错误/异常,您可以使用 if 条件。

    if(_totalSupplierCountStr.Length < 3) {
        _totalSupplierCountStr = new String('0', 3 - _totalSupplierCountStr.Length) + _totalSupplierCountStr;
    }
    

    另一种方法可能是使用PadLeft 方法。

    _totalSupplierCountStr = _totalSupplierCountStr.PadLeft(3, '0');
    

    【讨论】:

    • 如果您采用字符串操作方法,为什么不使用PadLeft(如问题的 cmets 中所给出),而不是滚动您自己的版本?
    • @canton7,我在回答中指定了您提到的方法。谢谢你的意见!
    猜你喜欢
    • 1970-01-01
    • 2011-07-23
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多