Помогите с манипулированием строк - PullRequest
1 голос
/ 21 мая 2011

Я выполняю некоторые манипуляции с данными и записываю записи, которые были обновлены, и их поля.

Я упростил приведенный ниже пример, но в основном я добавляю строки в построитель строк, а затем записываю его в текстовый файл

Я добавляю строки с:

changedValues.AppendLine(string.Format("NEW VALUE: {0} | OLD VALUE {1}", Customer1.name, Customer2.name));
changedValues.AppendLine(string.Format("NEW VALUE: {0} | OLD VALUE {1}", Customer1.number, Customer2.number));
changedValues.AppendLine(string.Format("NEW VALUE: {0} | OLD VALUE {1}", Customer1.phone, Customer2.phone))

Моя проблема в том, что имя, телефон и номер (плюс многие другие) имеют разную длину, поэтому файл журнала выглядит примерно так:

NEW VALUE: blabla | OLD VALUE blablabla
NEW VALUE: 123123123123123 | OLD VALUE 134
NEW VALUE: 213213232 | OLD VALUE 12333322333

, что делает его более трудным для чтения, чем если бы он выглядел примерно так:

NEW VALUE: blabla          | OLD VALUE blablabla
NEW VALUE: 123123123123123 | OLD VALUE 134
NEW VALUE: 213213232       | OLD VALUE 12333322333

Как мне этого добиться?

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 21 мая 2011

Вы должны заранее определить максимально возможное первое значение.Например 20:

sb.AppendFormat("NEW VALUE: {0,-20}| OLD VALUE {1}\r\n", Customer1.name, Customer2.name);
1 голос
/ 21 мая 2011

Взгляните на Составное форматирование

changedValues.AppendLine(string.Format("NEW VALUE: {0:-20} | OLD VALUE {1}", Customer1.name, Customer2.name));

Формат { index[,alignment][:formatString]}

Дополнительный компонент выравнивания представляет собой целое число со знаком, указывающее предпочтительный форматированныйширина поля.Если значение выравнивания меньше длины отформатированной строки, выравнивание игнорируется, а длина отформатированной строки используется в качестве ширины поля.Отформатированные данные в поле выравниваются по правому краю, если выравнивание положительное, и по левому краю, если выравнивание отрицательное.Если необходимо заполнение, используется пробел.Запятая требуется, если указано выравнивание.

0 голосов
/ 21 мая 2011

Используйте PadRight, как в этом примере:

static void Main()
{
string[] a = new string[]
{
    "cat",
    "poodle",
    "lizard",
    "frog",
    "photon"
};

// Output the header.
Console.Write("Key".PadRight(15));
Console.WriteLine("Value");

// Output array.
foreach (string s in a)
{
    Console.Write(s.PadRight(15));
    Console.WriteLine("noun");
}
}
Output

Key            Value
cat            noun
poodle         noun
lizard         noun
frog           noun
photon         noun
0 голосов
/ 21 мая 2011

Если вы знаете максимальную ширину ваших значений, вы можете использовать String.PadRight () .

0 голосов
/ 21 мая 2011
Customer1.name.PadRight(15, ' ')

И сделать то же самое для других значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...