可以使用String.Format()填充任意字符的某个字符串吗?使用string.format(不是padleft或padright)向左或向右填充任意字符串
Console.WriteLine("->{0,18}<-", "hello");
Console.WriteLine("->{0,-18}<-", "hello");
returns
-> hello<-
->hello <-
我现在想要空格为任意字符。 我不能用padLeft或padRight做到这一点的原因是因为我想能够在不同的地点/时间构造格式字符串,然后实际执行格式。
- 编辑 -
看出,似乎没有被现有的解决我的问题,我想出了这个(Think Before Coding's suggestion后)
--EDIT2--
我需要一些更复杂的情况,所以我去了Think Before Coding's second suggestion
[TestMethod]
public void PaddedStringShouldPadLeft() {
string result = string.Format(new PaddedStringFormatInfo(), "->{0:20:x} {1}<-", "Hello", "World");
string expected = "->xxxxxxxxxxxxxxxHello World<-";
Assert.AreEqual(result, expected);
}
[TestMethod]
public void PaddedStringShouldPadRight()
{
string result = string.Format(new PaddedStringFormatInfo(), "->{0} {1:-20:x}<-", "Hello", "World");
string expected = "->Hello Worldxxxxxxxxxxxxxxx<-";
Assert.AreEqual(result, expected);
}
[TestMethod]
public void ShouldPadLeftThenRight()
{
string result = string.Format(new PaddedStringFormatInfo(), "->{0:10:L} {1:-10:R}<-", "Hello", "World");
string expected = "->LLLLLHello WorldRRRRR<-";
Assert.AreEqual(result, expected);
}
[TestMethod]
public void ShouldFormatRegular()
{
string result = string.Format(new PaddedStringFormatInfo(), "->{0} {1:-10}<-", "Hello", "World");
string expected = string.Format("->{0} {1,-10}<-", "Hello", "World");
Assert.AreEqual(expected, result);
}
因为代码是有点过分投入在后,我把它移到GitHub上的要点是:
http://gist.github.com/533905#file_padded_string_format_info
那里的人可以很容易地分支它和任何:)
我认为你应该确保字符串不是空的。它会通过测试: 字符串。Fomat(“{0}”,(PaddedString)“Hello”); ? – configurator 2009-02-12 14:15:07