Belirli bir dizeyi rasgele karakterlerle doldurmak için String.Format() kullanabilir miyim?Rasgele dizeyle string.format (padleft veya padright değil) ile sağa veya sola kaydırma
Console.WriteLine("->{0,18}<-", "hello");
Console.WriteLine("->{0,-18}<-", "hello");
returns
-> hello<-
->hello <-
şimdi alanlarda keyfi bir karakter olmak istiyorum. PadLeft veya padRight ile yapamamın nedeni, format dizisini farklı bir yerde/saatte yapılandırabilmem ve biçimlendirmenin gerçekte yürütüldüğünden dolayıdır.
--EDIT--
--EDIT2--
sorunuma varolan çözüm I ( Think Before Coding's suggestion sonra) bu geldi orada görünmüyor Görülme kod, bir ana fikri olarak github için bir yazı koymak için çok fazla biraz taşındı Çünkü biraz daha karmaşık senaryolar yüzden 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);
}
gitti:
http://gist.github.com/533905#file_padded_string_format_info
İnsanların kolayca şube ve her ne :)
ben
Sonra bu gibi kullanabilirsiniz:
String.format geçilecek bir
ICustomFormatter
dönmek içinIFormatProvider
Uygulamak dizenin boş olmadığından emin olmalısınız. Testten geçer: dizesi.Fomat ("{0}", (PaddedString) "Merhaba"); ? – configurator