Kev*_*VuD -1 string string-formatting ios swift
我正在尝试以这种格式显示字符串
x day, y hr, z min
Run Code Online (Sandbox Code Playgroud)
其中x,y,z是来自用户和用户的Int值,如果日期和hr为0,则需要至少发送5分钟.
这是我处理显示用户输入的函数
func pickerTimeShow(day: Int, hour: Int, minutes: Int) -> String {
if day > 0 {
return "\(day) day, \(hour) hr, \(minutes) min"
}
if hour > 0 {
return "\(hour) hr, \(minutes) min"
}
return "\(minutes) min"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果用户发送pickerTimeShow(day:0,hour:2,minutes:0),我的字符串将显示
2 hr, 0 min
Run Code Online (Sandbox Code Playgroud)
这不是主意,因为它假设只是显示
2 hr
Run Code Online (Sandbox Code Playgroud)
此外,如果用户发送pickerTimeShow(day:5,hour:0,minutes:5),我的字符串将显示
5 day, 0 hr, 5 min
Run Code Online (Sandbox Code Playgroud)
但我只是想要
5 day, 5 min
Run Code Online (Sandbox Code Playgroud)
你有一个简单的解决方案来处理这种情况吗?除了添加更多if语句来检查哪个使我的函数真的很长,我真的想不出别的什么.非常感谢.
这是一种方法.将这些碎片放入一个数组中,然后在最后加入它们:
func pickerTimeShow(day: Int, hour: Int, minutes: Int) -> String {
var result = [String]()
if day > 0 {
result.append("\(day) day")
}
if hour > 0 {
result.append("\(hour) hr")
}
if minutes > 0 {
result.append("\(minutes) min")
}
if result.isEmpty {
// decide what to return in the case that all are zero
return "0 min"
} else {
return result.joined(separator: ", ")
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
pickerTimeShow(day: 0, hour: 0, minutes: 0) // "0 min"
pickerTimeShow(day: 5, hour: 0, minutes: 0) // "5 day"
pickerTimeShow(day: 0, hour: 6, minutes: 0) // "6 hr"
pickerTimeShow(day: 0, hour: 0, minutes: 7) // "7 min"
pickerTimeShow(day: 5, hour: 6, minutes: 0) // "5 day, 6 hr"
pickerTimeShow(day: 0, hour: 6, minutes: 7) // "6 hr, 7 min"
pickerTimeShow(day: 5, hour: 0, minutes: 7) // "5 day, 7 min"
pickerTimeShow(day: 5, hour: 6, minutes: 7) // "5 day, 6 hr, 7 min"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |