【问题标题】:Swift String Manipulation快速字符串操作
【发布时间】:2014-06-16 19:15:56
【问题描述】:

我已将 double 转换为字符串,因为我认为它更容易操作。例如,我有一串:14.52637472。

如何将其拆分为 2 个变量,一个用于句点之前,一个用于仅 2 个小数点之后?

应该是:one = 14 和 two = 52

这是我转换成字符串的代码:var str: String = all.bridgeToObjectiveC().stringValue

我不知道目标 C,所以我真的不能那样做,我已经阅读了关于字符串的 swift 书,但它没有讨论如何做到这一点,或者至少我可以没找到那部分?

请你帮帮我,想为我父亲开发一个应用程序给他一个惊喜。

【问题讨论】:

    标签: ios string swift


    【解决方案1】:

    从 double 开始,使用 NSString 的 format: 初始化器加上格式说明符来修剪除十分位和百分之一列之外的所有列,然后转换为字符串。然后使用 NSString 的componentsSeparatedByString() 创建一个以句点分隔的项目列表。

    let theNumber = 14.52637472
    let theString = NSString(format: "%.2f", theNumber)
    let theList = theString.componentsSeparatedByString(".")
    
    let left = theList[0] as String  // Outputs 14
    let right = theList[1] as String // Outputs 53
    

    作为使用 NSNumberFormatter 的第二个选项。

    let decimalNumber = NSDecimalNumber(double: 14.52637472)
    
    let numberFormatter = NSNumberFormatter()
    numberFormatter.maximumIntegerDigits = 2
    numberFormatter.maximumFractionDigits = 2
    
    let stringValue = numberFormatter.stringFromNumber(decimalNumber)
    let theList = stringValue.componentsSeparatedByString(".")
    

    【讨论】:

    • 成功了!非常感谢!时间一到就会接受答复
    • @user3723418 很高兴听到这个消息。如果您仍然感兴趣,我已经更新了我的帖子以包含第二种方法。
    • 值得注意的是,这里有一点代码味道:这个非常好的答案所暗示的大部分操作是将数值用作数字。这表明您可能首先不需要转换为字符串。当然,是否真的如此取决于您的要求。
    猜你喜欢
    • 2011-03-11
    • 2012-10-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2019-04-30
    • 2013-01-20
    相关资源
    最近更新 更多