用各种长度的文本覆盖控制台行

时间:2019-01-29 09:46:35

标签: c#

我正在尝试显示同一位置的装载百分比

我找到了解决方案

Console.Write($"\r{ (double) (i+1) * 100 / list.Count }% - {text}");

但是在百分比之后,我想显示一些不同长度的文本,例如20-40个字符之间的

这种方法的问题在于,如果“新”行比“上一个”短,那么“上一个”文本的某些部分仍保留在那里。

我设法写了'hack',它用空格覆盖了当前行(清除了它),然后写了我的行

Console.Write($"\r                                                                                                             ");
Console.Write($"\r{ (double) (i+1) * 100 / list.Count }% - {text}");

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法通常是

var stringOfLengthMaxWithSpacestoLeft = yourString.PadLeft(MaxStringLength, ' ');

var stringOfLengthMaxWithSpacestoRight = yourString.PadRight(MaxStringLength, ' ');

如果您想清除该行,您所要做的就是使用退格字符,然后以相同的长度(即

)覆盖
for (var i = 0; i++; i < MaxStringLength) 
    Console.Write("\b");

然后您可以重新开始写作。