Правильное форматирование строки

У меня есть строка, которую я хотел бы отформатировать в стиле таблицы. В настоящее время он выводит все данные, но не в нужных столбцах / строках. Хотелось бы, чтобы они выстраивались в линию и не пересекались. Любая помощь в том, что делать? Спасибо

Код, возвращающий значения:

 public override string ToString()
        {
            return String.Format($"{DayValues}|{MonthValues}|{YearValues}|{TimeValues}|{TimestampValues}|{RegionValues}|{DepthValues}|{LatitudeValues}|{LongitudeValues}|{MagnitudeValues}|{IrisValues}");
        }

Пример вывода:

10|January |2014|07:20:46|1389338446|TURKEY|10.300|39.460|27.950|4.000|4371306
31|December |2013|15:06:14|1388502374|CRETE|26.500|34.390|25.310|4.200|4370886
29|December |2013|06:54:59|1388300099|NORTHWESTERN BALKAN REGION|10.000|43.100|17.190|4.700|4370801
28|December |2013|18:55:03|1388256903|CYPRUS REGION|46.900|35.670|31.350|4.500|4370887

person Duncher    schedule 27.04.2017    source источник
comment
Вам не нужен String.Format, если вы используете $.   -  person Ruard van Elburg    schedule 28.04.2017
comment
Возврат возвращает его в мою главную, в которой он выписан. Это то, что нужно отредактировать?   -  person Duncher    schedule 28.04.2017
comment
Нет, вы можете удалить String.Format (и закрытие) - ›return $ {DayValues} | {MonthValues} | {YearValues} | {TimeValues} | {TimestampValues} | {RegionValues} | {DepthValues} | {LatitudeValues} | {LongitudeValues} | {MagnitudeValues} | {IrisValues};   -  person Ruard van Elburg    schedule 28.04.2017
comment
а что потом делать?   -  person Duncher    schedule 28.04.2017
comment
Это было просто примечание. Чтобы ответить на ваш вопрос, вы можете использовать PadRight, чтобы заполнить столбец (пробелами) до желаемой длины. Для RegionValues ​​вам нужно взять максимальную длину или выбрать длину для усечения столбца.   -  person Ruard van Elburg    schedule 28.04.2017
comment
Могу я центрировать ценности?   -  person Duncher    schedule 28.04.2017
comment
Если вы хотите что-то отцентрировать, вам нужно самостоятельно произвести расчет заполнения.   -  person Joel Coehoorn    schedule 28.04.2017


Ответы (2)


Для того, что вы хотите, вам нужно заполнить данные до максимального размера, примерно так:

    public override string ToString()
    {
        return $"{DayValues.ToString().PadRight(2, ' ')}|{MonthValues.ToString().PadRight(10, ' ')}|{YearValues.ToString().PadRight(4, ' ')}|{TimeValues.ToString().PadRight(8, ' ')}|{TimestampValues.ToString().PadRight(10, ' ')}|{RegionValues.ToString().PadRight(40, ' ')}|{DepthValues.ToString().PadRight(6, ' ')}|{LatitudeValues.ToString().PadRight(6, ' ')}|{LongitudeValues.ToString().PadRight(6, ' ')}|{MagnitudeValues.ToString().PadRight(6, ' ')}|{IrisValues.ToString().PadRight(6, ' ')}";
    }

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

person Gusman    schedule 27.04.2017
comment
Спасибо чувак. Очень признателен - person Duncher; 28.04.2017
comment
Это определенно долгий путь. - person Joel Coehoorn; 28.04.2017
comment
А короткий путь ...? - person Gusman; 28.04.2017
comment
Действительно хорошо, не знал, что интерполированные строки позволят заполнять данные. - person Gusman; 28.04.2017
comment
@Gusman это не имеет ничего общего с интерполированной строкой ..... вы можете добавить любой код в {} - person loneshark99; 28.04.2017
comment
@ loneshark99 Вот что такое интерполированная строка ... msdn.microsoft.com/ en-us / library / dn961160.aspx - person Gusman; 28.04.2017
comment
@ loneshark99 Он не говорит о коде. В моем ответе он говорит о разделе формата и ширины. - person Joel Coehoorn; 28.04.2017
comment
@JoelCoehoorn, о, теперь я понял, я смотрел не на тот ответ. Понятно, круто - person loneshark99; 28.04.2017

person    schedule
comment
@saraansh, если вы это видите, я предлагаю восстановить ваш ответ. Вкладки - отличное решение, когда комбинируется с отформатированным отступом. Использование вкладок помогает лучше выровнять положение, если вы скопируете текст, а затем вставите его куда-нибудь, например, в Excel. Вы используете строку формата, как в этом ответе, чтобы все было как минимум в пределах позиции табуляции желаемой ширины, и поместите одну табуляцию для оставшейся ширины в качестве разделителя. - person Joel Coehoorn; 28.04.2017
comment
@JoelCoehoorn Ключом к пониманию того, почему это работает, является интерполяция - это синтаксический сахар поверх String.Format, и это имеет смысл, поскольку форматирование работает именно так. msdn.microsoft.com/en-us/library/ - person loneshark99; 28.04.2017