首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串内插和格式化表

字符串内插和格式化表
EN

Stack Overflow用户
提问于 2022-02-22 15:19:26
回答 1查看 402关注 0票数 0

TL:DR:

对于C#字符串插值,<alignment>{<interpolationExpression>,<alignment>}中实际添加空格在哪里?它是前一个字符串的最右边的字符吗?这是前一个字符串的最左边的字符吗?我怎样才能做一个像下面这样简单的桌子呢?

玩具示例:

在C#中,我试图了解字符串间距是如何与字符串插值一起工作的。考虑下表。

代码语言:javascript
复制
Score:  97
Name:   Jack
ID:     01123

我试图在下面复制这个简单的例子,并在第二列和第一列之间放置了跟踪间距的数字。对于空格字符串,我没有两位数,而是从1到9,后面是代表10的0,然后是1到9(代表11-19个空格),后面是0(代表20个空格)。

代码语言:javascript
复制
Console.WriteLine("12345678901234567890"); // For tracking spacing
Console.WriteLine($"Score: {97, 10}");
Console.WriteLine($"Name: {"Jack", 10}");
Console.WriteLine($"ID: {01123, 10}");

其输出是

代码语言:javascript
复制
12345678901234567890
Score:         97
Name:       Jack
ID:       1123

Score: ... 97的间距表示97Score:之间的间隔基于Score:的最后一个字符,即:。我根据位于6位置的间距字符串6和位于9位置的间距字符串6得出这一结论。然而,行Name: ... Jack的间距,Name中的:Jack中的J之间的距离是12。

我认为解决这个对齐问题的一个解决方案可能是使用String.Length属性,但我不确定。在C#字符串插值中,对齐是如何工作的,我如何使用它来制作一个简单的表,就像我所展示的那样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 15:34:25

问题是格式仍然使每个值字符串具有相同的长度,但是初始字段名是而不是相同的长度,因此您的固定长度值字符串从不同的位置开始。

在这种情况下,第一列是静态文本,第二列总是左对齐,额外的格式是没有帮助的,因为您可以直接放入空格:

代码语言:javascript
复制
Console.WriteLine("12345678901234567890"); // For tracking spacing
Console.WriteLine($"Score:  {97}");
Console.WriteLine($"Name:   {"Jack"}");
Console.WriteLine($"ID:     {01123}");

但是假设你有更像这样的数据:

代码语言:javascript
复制
var items = new List<(string, object)>  {
    ("Score", 97),
    ("Name", "Jack")
    ("ID",   1123)
};

您可以通过将填充放在前面的字段名上来处理这一点,如下所示:

代码语言:javascript
复制
foreach(var item in items)
{
    Console.WriteLine($"{item.Item1,-10}{item.Item2}");
}

但这仍然缺少:分隔符。你可以这样恢复它:

代码语言:javascript
复制
foreach(var item in items)
{
    Console.WriteLine($"{item.Item1+':',-10}{item.Item2}");
}

这里可能值得探讨的另一件事是选项卡字符,但是如果字段名之间的差异大于选项卡的宽度,则可能会比较棘手。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71223828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档