爲了以您要求的方式輸出字符串,您需要知道需要向每個字符串添加多少填充以確保-
字符的排列。示例文本中的第一列最多有5個字符,因此第一行中的第一列需要添加一個額外的空間,以便在第二列開始之前使-
字符排隊等等。
所以,首先你需要計算出每一列的max_lengths
:
var max_lengths =
log
.SelectMany(array =>
array.Select((e, i) => new { length = e.Length, index = i }))
.GroupBy(x => x.index, x => x.length)
.Select(x => new { index = x.Key, max_length = x.Max() })
.ToDictionary(x => x.index, x => x.max_length);
這給:
現在你可以創建一個版本的log
具有填充字符串:
var padded =
log.Select(array =>
array.Select((e, i) => e.PadRight(max_lengths[i])));
現在的結果很簡單:
var result = String.Join(Environment.NewLine, padded.Select(x => String.Join(" - ", x)));
那就是:
var log = new []
{
new [] { "TIME", "TITLE", "DESCRIPTION" },
new [] { "Happy Days", "Super Fun", "Woah!" },
new [] { "Yes", "I can't complain", "simply stunning" },
};
這給:
TIME - TITLE - DESCRIPTION
TIME2 - TITLE2 - DESCRIPTION2
我們可以用一個更有趣的組輸入測試此
TIME - TITLE - DESCRIPTION
Happy Days - Super Fun - Woah!
Yes - I can't complain - simply stunning
它看起來像你所要求實現[log4net的(https://logging.apache.org /log4net/release/config-examples.html)功能。檢查鏈接。 – KernelMode