【发布时间】:2019-05-31 10:57:32
【问题描述】:
说明
我想格式化多个字符串,使它们彼此齐平。 (查看实际结果和预期结果)
我尝试了什么
我已经实现了这个解决方案:https://stackoverflow.com/a/31613297/11582550 (见代码) 它也有效,但前提是我在控制台中打印结果。我想将文本保存在 label.text 中,这是行不通的。
一些代码
func formattedString(left:String, right:String) -> String {
let left = (left as NSString).utf8String
let right = (right as NSString).utf8String
print(String(format:"%-20s %-20s", left!, right!))
return String(format:"%-20s %-20s", left!, right!)
}
label.text += formattedString(left: "Firstname: ", right: "Alfred") + "\n" + formattedString(left:"Lastname: ", right: "LongLastname") + "\n" + formattedString(left:"Note:", right: "private")
// actual result
我的预期
## actual result (saved in label.text)
Firstname: Alfred
Lastname: LongLastname
Note: private
## expected result (saved in label.text)
Firstname: Alfred
Lastname: LongLastname
Note: private
【问题讨论】:
-
不清楚,预期结果和实际结果似乎是一样的。
-
所以你的问题是列不对齐,因为字体是比例字体,不同的字符可以有不同的宽度?
-
@vacawama:感谢您的编辑——这正是我的意思。
-
我认为@MartinR 在他的第一条评论中发现了您的问题。为您的标签选择一个固定的空格字体(例如 Courier New),这应该可以解决您的问题。
-
@Martin R 和 vacawama:实际上,这解决了我的问题。谢谢!我会将问题标记为已回答。