форматирование строки - PullRequest
2 голосов
/ 23 июня 2011

Я пытаюсь выровнять значения.Интересно, почему это происходит:

        string value = "";

        value += string.Format("{0,-10}", "value");
        value += string.Format("{0,5}", "value");

        value += Environment.NewLine;

        value += string.Format("{0,-8}", "val");
        value += string.Format("{0,7}", "value");

        MessageBox.Show(value);

Если я проверяю значение до я делаю "MessageBox.Show () это правильно . Результат:

value     value
val       value

Как и должно быть, но когда я делаю MessageBox.show (), они получают вот так:

   value     value
   val     value

Я действительно не могу понять, почему он изменяет строку с помощью show ()?То же самое происходит, когда я пытаюсь напечатать «значение», тогда оно не выравнивается правильно.

Кстати: это всего лишь тестовый код, чтобы вы могли понять проблему, с которой я столкнулся с реальным кодом.

Ответы [ 3 ]

3 голосов
/ 23 июня 2011

Это может быть вызвано тем, что шрифт, используемый в окне сообщения, не является моноширинным , что означает, что каждый символ занимает одинаковое количество горизонтального пространства.Возможно, шрифт, который вы используете в отладчике Visual Studio, - это то, почему отступы выглядят совершенно иначе.

Вы можете попробовать, если использование табуляции вместо пробелов для форматирования дает лучшие результаты.

3 голосов
/ 23 июня 2011

Это потому, что шрифт, используемый MessageBox.Show, не имеет фиксированной ширины ...

0 голосов
/ 23 июня 2011

Согласно этот ответ использует путь \t в качестве разделителя столбцов.

Это определенно включает проверку длины всех слов каждого отдельного столбца.Таким образом, вы будете знать, использовать ли один \t или двойной \t\t и т. Д.

...