Pad esquerda ou direita com string.format (não padleft ou padright) com string arbitrária
Posso usar String.Format () para preencher uma determinada string com caracteres arbitrário
Console.WriteLine("->{0,18}<-", "hello");
Console.WriteLine("->{0,-18}<-", "hello");
returns
-> hello<-
->hello <-
Agora eu quero que os espaços sejam um caractere arbitrário. O motivo pelo qual não posso fazer isso com padLeft ou padRight é porque desejo poder construir a sequência de formatação em um local / hora diferente da formatação realmente executada.
--EDITAR-
Visto que não parece haver uma solução existente para o meu problema, eu vim com isso (depois de Pense antes da sugestão de codificação)
- EDIT2 -
Eu precisava de alguns cenários mais complexos, então fui paraThink Antes da segunda sugestão de codificação
[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);
}
omo o código era um pouco demais para colocar em um post, mudei-o para o github como uma essênci
http: //gist.github.com/533905#file_padded_string_format_inf
Lá as pessoas podem facilmente ramificá-lo e o que quer que seja:)