Pad gauche ou droite avec string.format (pas padleft ou padright) avec une chaîne arbitraire
Console.WriteLine("->{0,18}<-", "hello");
Console.WriteLine("->{0,-18}<-", "hello");
returns
-> hello<-
->hello <-
Je veux maintenant que les espaces soient un caractère arbitraire. La raison pour laquelle je ne peux pas le faire avec padLeft ou padRight est parce que je veux être en mesure de construire la chaîne de format à un endroit/heure différent, puis le formatage est réellement exécuté.
--EDIT--
Vu qu'il ne semble pas être une solution existante à mon problème, je suis venu avec ce (après Think Before Coding's suggestion)
--EDIT2--
je avais besoin certains scénarios plus complexes, donc je suis allé pour 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);
}
Parce que le code a été un peu trop à mettre dans un poste, je me suis déplacé à github comme essentiel: http://gist.github.com/533905#file_padded_string_format_info
Là les gens peuvent facilement se ramifier et tout :)
I pense que vous devriez vous assurer que la chaîne n'est pas vide. Souhaitez-vous passer le test: chaîne.Fomat ("{0}", (PaddedString) "Bonjour"); ? – configurator