suprsnipes Ответов: 2

Строка C#.Выравнивание Формата


Привет,

У меня есть вопрос относительно струны.Формат

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

const string format = "|TG {0,6} |TO {1,4} |PO {2,4}":

string result = string.Format(format, net, total, price); 


Пожалуйста, посмотрите текстовый файл по ссылке ниже, описывающий, как он выглядит сейчас и как я хотел бы, чтобы он тоже выглядел.

[ССЫЛКА УДАЛЕНА]
Содержимое файла:
а) как это выглядит
|TG     98 |TO   41 |PO   42
 |TG    101 |TO   42 |PO   42

Б) как я хочу, чтобы он выглядел
|TG      98 |TO   41 |PO   42
|TG    101 |TO   42 |PO   42
[/ССЫЛКА УДАЛЕНА]

Однако то, что, по-видимому, происходит, например, в строке 1 у нас есть число 98, а в строке 2 101 в выводе печати оно показывает 98 по центру с 101.

Это кажется последовательным по всем направлениям и выбрасывает все остальные столбцы. Я уверен, что нет никаких проблем с кодом, но есть ли другой способ, которым я могу получить результат, который я ищу.

Спасибо за помощь,
suprsnipes

[edit]удалил ссылку на файл и добавил содержимое файла в вопрос, с блоком кода для сохранения форматирования - OriginalGriff[/edit]

Sergey Alexandrovich Kryukov

Пожалуйста, прекратите публиковать не-ответы как "решение". Он может давать вам отчеты о злоупотреблениях, которые в конечном итоге могут привести к отмене вашего членства в CodeProject.
Комментируйте любые сообщения, отвечайте на доступные комментарии или используйте "улучшить вопрос" (выше).
Кроме того, имейте в виду, что участники получают уведомления только о посте, отправленном в ответ на эти сообщения.
—СА

2 Ответов

Рейтинг:
18

OriginalGriff

Посмотрев на ваш файл "я хочу это так", я не могу не думать, что это не то, что вы хотите - первый выглядит так, как будто у вас есть дополнительное пространство в начале второй строки, но это скорее будет то, что вы хотите, чем второй, если вы ищете что-то выровненное.

Поэтому я попробовал твой код:

const string format = "|TG {0,6} |TO {1,4} |PO {2,4}";

Console.WriteLine(string.Format(format, 98, 101, 42));
Console.WriteLine(string.Format(format, 101, 101, 42));
Console.WriteLine(string.Format(format, 8777, 101, 42));

И то, что получилось, было идеально выровнено:
|TG     98 |TO  101 |PO   42
|TG    101 |TO  101 |PO   42
|TG   8777 |TO  101 |PO   42
Так что я подозреваю, что проблема в другом...проверьте, что вы делаете со своим result строка - возможно, вы выводите ее неправильно.


Рейтинг:
0

Muhammad Asad

На самом деле вы должны использовать

Arial or etc font
вот почему происходит ошибка. Пожалуйста, используйте
Microsoft Sans Serif or etc
поскольку Arial не может использовать определенный размер для символа(используйте разную ширину для' A 'и' i'), а Microsoft Sans Serif использует точный размер для каждого символа.
Спасибо!