gpt4 book ai didi

swift - 在表格中格式化 println 输出

转载 作者:行者123 更新时间:2023-11-28 10:01:23 30 4
gpt4 key购买 nike

this Java question ,但对于 Swift。

如何将这样的表格输出到控制台,最好使用 println

n       result1      result2      time1      time2    
-----------------------------------------------------
5 1000.00 20000.0 1000ms 1250ms
5 1000.00 20000.0 1000ms 1250ms
5 1000.00 20000.0 1000ms 1250ms

我尝试使用 println("n\tresult1\tresult2") 但结果排列不正确。

最佳答案

我找到了一种使用字符串方法“padding(::)”在 Swift (3.0) 中生成柱状文本输出的快速简便的方法 [在 Swift 2.x 中,该方法被命名为“stringByPaddingToLength(::)”] .它允许您指定列的宽度、要用作填充的文本以及开始的填充索引。如果您不介意它只适用于左对齐的文本列,那么它就像一个魅力。如果您想要其他对齐方式,则必须购买其他字符计数方法和其他此类复杂性。

下面的解决方案旨在说明方法“padding(::)”的实用性。显然,利用它的最佳方法是创建一个函数,该函数迭代一个集合以生成所需的表,同时最大限度地减少代码重复。我这样做是为了专注于手头的任务。

最后,“println”在 Swift 2.x+ 中似乎不存在,所以我恢复为“print()”。

使用您提出的问题来举例说明:

//Set up the data
let n : Int = 5
let result1 = 1000.0
let result2 = 20000.0
let time1 = "1000ms"
let time2 = "1250ms"

//Establish column widths
let column1PadLength = 8
let columnDefaultPadLength = 12

//Define the header string
let headerString = "n".padding(toLength: column1PadLength, withPad: " ", startingAt: 0) + "result1".padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + "result2".padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + "time1".padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + "time2".padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0)

//Define the line separator
let lineString = "".padding(toLength: headerString.characters.count, withPad: "-", startingAt: 0)

//Define the string to display a line of our data
let nString = String(n)
let result1String = String(result1)
let result2String = String(result2)
let dataString = nString.padding(toLength: column1PadLength, withPad: " ", startingAt: 0) + result1String.padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + result2String.padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + time1.padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0) + time2.padding(toLength: columnDefaultPadLength, withPad: " ", startingAt: 0)

//Print out the data table
print("\(headerString)\n\(lineString)\n\(dataString)")

输出将以整齐的柱状格式打印到您的控制台:

n       result1     result2     time1       time2       
--------------------------------------------------------
5 1000.0 20000.0 1000ms 1250ms

将变量“columnDefaultPadLength”从 12 更改为 8 将导致以下输出:

n       result1 result2 time1   time2   
----------------------------------------
5 1000.0 20000.0 1000ms 1250ms

最后,将填充长度减小到小于数据的值会截断数据而不是产生错误,非常方便!将“columnDefaultPadLength”从 8 更改为 4 会产生以下输出:

n       resuresutimetime
------------------------
5 1000200010001250

显然这不是理想的格式,但通过简单调整填充长度,您可以快速将表格调整为紧凑但可读的形式。

关于swift - 在表格中格式化 println 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138689/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com