相同长度的字符串需要不同数量的制表符进行格式化

本文关键字:制表符 格式化 字符串 | 更新日期: 2023-09-27 18:10:34

我有多个长度相同的字符串,但它们似乎需要不同数量的制表位才能正确格式化。我不确定我在谷歌上搜索什么,我没有得到任何可能对我有帮助的结果,所以我在这里问。

除了创建多个控件之外,还有什么好的解决方案呢?这是我不想要的…

看看Malzahar和Kassadin(相同的长度,相同的制表位,Malzahar的格式混乱)当前代码:

if (_counter.zCounter[i].Length <= 8)
{
    DataCollection += _counter.zCounter[i] + "'t't↑" + _counter.zUpvotes[i] + "'t↓" + _counter.zDownvotes[i] + "'n";
}
else
    DataCollection += _counter.zCounter[i] + "'t↑" + _counter.zUpvotes[i] + "'t↓" + _counter.zDownvotes[i] + "'n";

相同长度的字符串需要不同数量的制表符进行格式化

字符串长度(字符数)与其宽度(像素数)仅松散相关。

你的方法只适用于固定宽度的字体(如Courier)。否则,您将需要使用Measure()函数并计算特定字体的空格/制表符。混乱。

最好把你的GUI改成2列。

是否使用固定宽度(等宽)字体?即使这样,制表符的位置也取决于字符串的长度。

当制表符前面的字符串太长时,需要更少的制表符。这就是你的问题所在:

str→   →   →str
strstr→→   →str
strstrstr→ →   →str

我建议您插入填充空格。您可以这样计算空格的数目:

padding = (column - (index % column)) % column

其中column是下一个单词要与之对齐的从零开始的列,index是前一个单词后面的字符的从零开始的索引。

str·········str
strstr······str
strstrstr···str