如果在 C# 中要填充的长度为 0,如何使用给定字符填充字符串或将其设为空?
How do you pad a string with a given character or make it empty if length to pad is 0 in C#?
除了长度为 0 时使字符串为空之外,是否有一个函数的功能几乎与 String.PadLeft(int length) 的功能完全相同?
这就是我想要做的:
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!
没有这样的方法。但是,您可以编写自己的 Extension Method 来满足您的需求。
此方法的行为与经典 PadLeft
完全相同,只是如果提供的长度为 0,则 return 为空字符串。
如果您希望在填充小于字符串长度的情况下 return 一个空字符串,您可以轻松地将条件从 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
...
除了长度为 0 时使字符串为空之外,是否有一个函数的功能几乎与 String.PadLeft(int length) 的功能完全相同? 这就是我想要做的:
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!
没有这样的方法。但是,您可以编写自己的 Extension Method 来满足您的需求。
此方法的行为与经典 PadLeft
完全相同,只是如果提供的长度为 0,则 return 为空字符串。
如果您希望在填充小于字符串长度的情况下 return 一个空字符串,您可以轻松地将条件从 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
...