我正在努力调整价值观。 我想知道为什么会这样:
string value = "";
value += string.Format("{0,-10}", "value");
value += string.Format("{0,5}", "value");
value += Environment.NewLine;
value += string.Format("{0,-8}", "val");
value += string.Format("{0,7}", "value");
MessageBox.Show(value);
如果我在之前检查值,我执行“MessageBox.Show()”正确。结果是:
value value
val value
应该如此,但是当我做MessageBox.show()时,他们会这样:
value value
val value
我真的不明白为什么用show()更改字符串?当我试图打印“值”时会发生同样的事情,然后它就不对齐了。
顺便说一句:这只是一个测试代码,所以你可以理解我在实际代码中遇到的问题。
答案 0 :(得分:3)
那是因为MessageBox.Show
使用的字体没有固定的宽度......
答案 1 :(得分:3)
这可能是由于消息框中使用的字体不是monospaced,这意味着每个字符占用的空间相等。您在Visual Studio调试器中使用的字体可能是,这就是填充看起来完全不同的原因。
您可以尝试使用制表符而不是空格来为您的格式化提供更好的结果。
答案 2 :(得分:0)
根据this回答,可以使用\t
作为列分隔符。
这肯定涉及检查每个单列的所有单词的长度。这样您就可以知道是使用单个\t
还是双\t\t
等。