【问题标题】:Swift loses leading zero斯威夫特失去前导零
【发布时间】:2017-10-17 11:24:38
【问题描述】:

我正在尝试将 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
    }

【问题讨论】:

  • 为什么要保持0,这种形式的Int没有意义
  • 前导零没有任何价值,因为它是一个整数,它是一个数字,它会丢失前导零。如果您打算使用前导零,请尝试将其转换为字符串。
  • @Lu_ 是对的。 0 对 Int 没有任何意义。如果您愿意,可以将其声明为字符串而不是整数。
  • 您是在询问convertToTime 方法还是其他问题?如果您使用 int 数据类型传递值,基本上 int 会将您的 0902 转换为 902
  • 请让我们知道您使用上述方法要达到的目标。我希望我们能提供帮助。您从哪里获得“0902”价值??

标签: ios swift time int


【解决方案1】:

这里的问题是你如何定义那个值“0902”的类型?

真的是一个数字吗?

或者它实际上是一个只包含数值的字符串?

例如电话号码。那是一个数字吗?还是字符串?

你想把它们加在一起吗?还是将它们相乘?如果没有,请将其设为字符串。

一旦将其设为字符串,前导 0 就不再是问题,因为它只是字符串的一部分。一旦你把它变成一个数字,那么前导零作为0902 == 902 在那里是没有意义的。

附加

再看一遍......它甚至是一个字符串吗?你在这里处理时间?那么你肯定应该使用 NSDate 对象吗?

问题还是一样。确保正确定义类型。

确定这个“0902”究竟是什么。然后让它成为正确的类型。

无论是数字、字符串还是日期。

然后,正确的类型将确保您获得正确的格式、函数和属性。

【讨论】:

    【解决方案2】:

    将您的函数参数更改为字符串:

    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"
    

    【讨论】:

      【解决方案3】:
      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
      }
      

      试试这个代码

      它首先将 Int 转换为 String 并在添加“:”之前检查其是否为 4 个字符

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-22
        • 2017-03-24
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 2017-11-13
        • 2015-08-19
        • 2014-09-11
        相关资源
        最近更新 更多