在c#中,如何用给定的字符填充字符串,或者如果要填充的长度为0,则将其设置为空

本文关键字:填充 设置 字符串 何用 或者 字符 如果 | 更新日期: 2023-09-27 18:07:20

是否有一个函数几乎完全完成String。PadLeft(int length)除了如果length为0,使字符串为空吗?这就是我想要做的:

string someText = "abc".PadLeft(8, '0');
Console.WriteLine(someText);
string otherText = "xyz".PadLeft(0, '0');
Console.WriteLine(otherText);
Console.WriteLine("Done!");

我希望输出是这样的:

00000abc
Done!

但是,实际的输出是这样的:

00000abc
xyz
Done!

在c#中,如何用给定的字符填充字符串,或者如果要填充的长度为0,则将其设置为空

没有这样的方法。但是,您可以编写自己的扩展方法来做您想做的事情。

这个方法的行为与经典的PadLeft完全相同,除了如果提供的长度为0,它返回一个空字符串。

如果您希望在填充小于字符串长度时返回空字符串,则可以轻松地将条件从padLength == 0更改为padLength < input.Length

public static class Extensions
{
    public static string CustomPadLeft(this string input, int padLength, char padChar)
    {
        if (padLength == 0)
        {
            return string.Empty;
        }
        return input.PadLeft(padLength, padChar);
    }
}

下面是验证行为的相应单元测试:

[TestMethod]
public void PadTest()
{
    Assert.AreEqual(string.Empty, "xyz".CustomPadLeft(0, '0'));
    Assert.AreEqual("xyz", "xyz".CustomPadLeft(2, '0'));
    Assert.AreEqual("00000abc", "abc".CustomPadLeft(8, '0'));
}

我也建议你找一个比我的CustomPadLeft更好的名字…