快速丢失前导零
问题描述:
我试图将一个int传递给另一个类如0902
,并且发送的结果丢失了第一个零。这只有在零引导时才会发生。快速丢失前导零
我也有一个函数,试图添加它但也不起作用。 Swift中没有保留前导零Int的原因是什么?
如果我将0902
的值发送给另一个类,之后显示的是902
,完全混淆。
func convertToTime(_ value: Int) -> String {
print(value) // 902
var text = String(format: "%02d", value)
text.insert(":", at: text.index(text.startIndex, offsetBy: +2))
return text
}
答
你的函数参数更改为String:
func convertToTime(_ value: String) -> String {
print(value) // prints "0902"
var text = value
text.insert(":", at: text.index(text.startIndex, offsetBy: +2))
return text
}
convertToTime("0902") // prints "09:02"
答
func convert(integerToTimeString int: Int) -> String{
var string = "\(int)"
if string.count > 3{
string.insert(":", at: string.index(string.startIndex, offsetBy: String.IndexDistance(2)))
return string
}
string.insert("0", at: string.startIndex)
string.insert(":", at: string.index(string.startIndex, offsetBy: String.IndexDistance(2)))
return string
}
试试这个代码,而不是
它的诠释第一转换为字符串,并检查是否增加前的4个字符“ :“
答
这里的问题是如何定义值”0902“的类型?
难道是真的有多少?
或者它实际上是一个只包含数值的字符串吗?
像电话号码一样。这是一个数字吗?或者一个字符串?
想把它们加在一起吗?或者乘以它们?如果不是,请将其设为字符串。
一旦你使它成为一个字符串,领先的0不再是一个问题,因为它只是字符串的一部分。只要你把它做成一个数字,那么前导零就在0902 == 902
之内就没有意义了。
附加
有过再看看这...难道连一个字符串?你在这里处理时间?所以你应该使用NSDate对象?
虽然问题仍然存在。确保你正确地定义你的类型。
确定这个“0902”实际上是什么。然后使其成为正确的类型。
无论是数字,字符串还是日期。
正确的类型将确保您获得正确的格式,以及它的功能和属性。
它为什么要保持0,则表示没有为诠释这种形式 –
前导零是没有价值的,并因为它是一个int,这是一个数字的数字,它就会失去前导零。如果你打算有一个前导零,请尝试将其转换为字符串。 –
@Lu_是对的。对于Int来说0没有任何意义如果你想这样做,你可以声明它为字符串而不是整数。 – luckyShubhra