【问题标题】:In c# how do i print a string in the same line, replacing the string each time i print the result? [duplicate]在 c# 中,我如何在同一行中打印一个字符串,每次打印结果时都替换该字符串? [复制]
【发布时间】:2019-11-28 19:12:15
【问题描述】:

我正在尝试模拟从 0% 到 100% 的加载屏幕。

我使用的是 Console.Write 而不是 WriteLine,但这只会将值与其余部分一起打印,而不是替换最后一次打印。

for (int k = 0; k <=100; k++){
                    Console.Write($"[LOADING: {k}% ]");
                    Thread.Sleep(25);
                }

这会导致:

[加载 1%] [加载 2%] [加载 3%] [加载 4%] [加载 5%]

我希望有一个字符串用下一个打印值替换自己

【问题讨论】:

  • 你需要清除之前的写入,因为你所做的只是附加文本。

标签: c# console-application


【解决方案1】:

试试这个

for (int k = 0; k <=100; k++){
                Console.SetCursorPosition(0, Console.CursorTop);
                Console.Write($"[LOADING: {k}% ]");
                Thread.Sleep(25);
            }

【讨论】:

  • 这可行,但它会在屏幕顶部打印值,我实际上需要它在打印的其他字符串下方并且不知道确切位置。
  • 试试这个 Console.SetCursorPosition(0, Console.CursorTop);
  • 这也有效,谢谢 Alexandr :)
【解决方案2】:

只需在 for 循环的每次迭代中调用 Console.Clear() 即可覆盖之前在控制台中显示的任何文本。

for (int k = 0; k <=100; k++){
                Console.Clear()
                Console.Write($"[LOADING: {k}% ]");
                Thread.Sleep(25);
            }

【讨论】:

  • 好主意,它按预期工作。非常感谢
  • @PedroContreras 如果您正在寻找它,请继续接受我的回答。欢迎来到 StackOverflow! :)
  • ¡谢谢卢克! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
相关资源
最近更新 更多