替换打印出的文本

时间:2015-03-03 12:48:40

标签: swift command-line println

我创建了一个命令行工具,它可以执行一些长操作,我想通过print语句通知用户,例如:

"10% Done"
"20% Done"

操作的百分比。如果我使用println,每个进度都会被打印成一个新的行(显然),但是有一种方法可以用swift来替换最后一个打印的文本,所以在控制台上你只能读取实际的百分比,不是实际和之前印刷的那些?

3 个答案:

答案 0 :(得分:3)

如果输出到终端,那么你可以使用这个事实 \r(回车)将“光标”移动到当前的开头 线,没有前进到下一行:

print("10% done \r")
print("20% done \r")
print("100% done\n")

(但请注意,这在Xcode调试器控制台中不起作用。)

答案 1 :(得分:3)

这样的东西适用于终端控制台:

import Foundation
for i in 1...10 {
    print("\(i) \r", terminator: "")
    fflush(stdout)
    sleep(1)
}

答案 2 :(得分:0)

不,不可能。 Swift无法访问已打印出的字符串。但您可以创建一个显示进度的进度条。例如:

|=========               | 40%

但是,在您将日志打印出来之后,您无法更改日志的输出。