Как выровнять колонки в string.Format?

var str1 = string.Format("<b>{0}</b> {1,7} | <b>{2,-10}</b> {3,-5} | <b>{4}</b> {5,-5} | <b>{6}</b> {7,-5} | <b>{8}</b> {9,-5}", "T_IN_max,°C", t_in_max, "T_OUT_max,°C", t_out_max, "P_IN_max,bar", p_in_max, "P_OUT_max,bar", p_out_max, "P_SBR_max,bar", p_sbr_max);
var str2 = string.Format("<b>{0}</b> {1,7} | <b>{2,-10}</b> {3,-5} | <b>{4}</b> {5,-5} | <b>{6}</b> {7,-5} | <b>{8}</b> {9,-5}", "T_IN_min,°C", t_in_min, "T_OUT_min,°C", t_out_min, "P_IN_min,bar", p_in_min, "P_OUT_min,bar", p_out_min, "P_SBR_min,bar",p_sbr_min);
     

Хочу чтобы строки были выровнены по разделителю |

В отладчике я вижу такую строку введите сюда описание изображения

Но когда копирую - все ровно. Подскажите почему в отладчике съезжает текст?

<b>T_IN_max,°C</b>    46,8 | <b>T_OUT_max,°C</b> 46,1  | <b>P_IN_max,bar</b> 5,2   | <b>P_OUT_max,bar</b> 1,9   | <b>P_SBR_max,bar</b> 1,9  
<b>T_IN_min,°C</b>      31 | <b>T_OUT_min,°C</b> 31,5  | <b>P_IN_min,bar</b> 1     | <b>P_OUT_min,bar</b> 0,5   | <b>P_SBR_min,bar</b> 1,9  

Ответы (1 шт):

Автор решения: Andrew

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

Дальше задача сводится до того что бы измерять количество символов в каждой ячейке и растянуть соответствующе другие ячейки в колонке до этого же количества символов.

На практике у тебя все уже выровняно вручную. Но плывет все просто потому, что текстбокс имеет не моноширинный шрифт, в отличии от отладчика EvgeniyZ.... ну или в отличии от твоей консоли.

Заменяй шрифт твоего поля на моноширинный и будет тебе счастье.


Но вообще это извращение и используй нормальные теги таблицы, если уж это хтмл)

→ Ссылка