char!
и задаются следующим образом: c: #"q"
. probe find "here and now" "and"
"and now"
Существует другое решение.
Реализация IFormatProvider
для возврата ICustomFormatter
, который будет передан строке. Формат:
public class StringPadder : ICustomFormatter
{
public string Format(string format, object arg,
IFormatProvider formatProvider)
{
// do padding for string arguments
// use default for others
}
}
public class StringPadderFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
return new StringPadder();
return null;
}
public static readonly IFormatProvider Default =
new StringPadderFormatProvider();
}
Затем можно использовать его как это:
string.Format(StringPadderFormatProvider.Default, "->{0:x20}<-", "Hello");
Вы могли инкапсулировать строку в структуре, которая реализует IFormattable
public struct PaddedString : IFormattable
{
private string value;
public PaddedString(string value) { this.value = value; }
public string ToString(string format, IFormatProvider formatProvider)
{
//... use the format to pad value
}
public static explicit operator PaddedString(string value)
{
return new PaddedString(value);
}
}
, Затем используют это как этот:
string.Format("->{0:x20}<-", (PaddedString)"Hello");
результат:
"->xxxxxxxxxxxxxxxHello<-"
Редактирование: Я неправильно понял Ваш вопрос, я думал, что Вы спрашивали, как заполнить пробелами.
то, Что Вы спрашиваете, не является возможным использованием string.Format
компонент выравнивания; string.Format
всегда клавиатуры с пробелом. Посмотрите раздел Alignment Component MSDN: Составной объект, Форматирующий .
Согласно Отражателю, это - код, который работает внутренний StringBuilder.AppendFormat(IFormatProvider, string, object[])
, который называют string.Format
:
int repeatCount = num6 - str2.Length;
if (!flag && (repeatCount > 0))
{
this.Append(' ', repeatCount);
}
this.Append(str2);
if (flag && (repeatCount > 0))
{
this.Append(' ', repeatCount);
}
, Как Вы видите, пробелы трудно кодируются, чтобы быть заполненными пробелом.