Выровнять N столбцов из отдельных символов - PullRequest
1 голос
/ 05 февраля 2012

Я пытаюсь получить N номеров столбцов отдельных символов в C #, выводя строку через метку для каждой строки в WFA. Я попытался использовать найденное решение Здесь , используя String.Format, но я не могу, так как я не знаю количество столбцов, я также не думаю, что оно будет работать, потому что символы не совпадают ширина.

Я попытался сгенерировать строку для передачи в качестве первого аргумента String.Format, а затем в качестве второго аргумента указать массив символов для строки, но я получаю ошибку Index (zero based) must be greater than or equal to zero and less than the size of the argument list., которая вводит в заблуждение, поскольку я гарантировал это чтобы быть правдой.

//generatedText is built in a loop consisting of  += "{" + i + ", -2} "
row1.Text = String.Format(generatedText, myCharArray); //error!

Тривиальное решение простого разделения каждого столбца пробелом не работает вообще, потому что символы не имеют одинаковую ширину, поэтому они быстро смещаются (я думаю, что String.Format решает эту проблему, если бы я мог получить ее в работа).

Какой-нибудь совет по исправлению моего использования String.Format или способа сделать текст фиксированной шириной, возможно, или другое решение моей проблемы?

РЕДАКТИРОВАТЬ: Я попытался использовать String.Format для определенного количества столбцов, и он не выравнивает их должным образом из-за разной ширины символов. Другие решения?

Пример вывода будет что-то вроде ...

Row 1:  a  j  e  t  v  q  p  z  c
Row 2:  c  c  b  r  m  a  s  t  m

с идеально выстроенными колоннами.

1 Ответ

1 голос
/ 05 февраля 2012

Нет надежного способа сделать то, что вы хотите, если вы не используете моноширинный шрифт, как рекомендовано @ Scott-Hunter. Вы могли бы выдумать это путем измерения строк, но с немоноширинным шрифтом будут пробелы, которые вы просто не сможете исправить с помощью пробелов.

С моноширинным шрифтом это тривиально. Просто отдельно с пробелами. Используйте Консол, Курьера и т. Д.

...