¿Puedo usar String.Format() para rellenar una determinada cadena con caracteres arbitrarios?Almohadilla izquierda o derecha con string.format (no padleft o padright) con cadena arbitraria
Console.WriteLine("->{0,18}<-", "hello");
Console.WriteLine("->{0,-18}<-", "hello");
returns
-> hello<-
->hello <-
Ahora quiero que los espacios sean un carácter arbitrario. La razón por la que no puedo hacerlo con padLeft o padRight es porque quiero ser capaz de construir la cadena de formato en un lugar/tiempo diferente, entonces el formateo se ejecuta realmente.
--EDIT--
visto que no parece ser una solución existente a mi problema me ocurrió esto (después de Think Before Coding's suggestion)
--EDIT2--
que necesitaba algunos de los escenarios más complejos, así que fui a 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);
}
Debido a que el código fue un poco demasiado para poner en un post, la trasladó a gitHub como una esencia: http://gist.github.com/533905#file_padded_string_format_info
la gente no puede expandirse fácilmente y cualquiera que sea :)
I cree que debe asegurarse de que la cadena no esté vacía. Pasaría la prueba: cadena.Fomat ("{0}", (PaddedString) "Hola"); ? – configurator