【问题标题】:In a string with just numbers and commas how do I convert that into a double在只有数字和逗号的字符串中,如何将其转换为双精度
【发布时间】:2019-05-28 20:13:11
【问题描述】:

所以我有一个只有数字和逗号的字符串。例如“1,233,323.32”(字符串),但我想将其转换为 1233323.32(双精度)。

【问题讨论】:

  • 使用NumberFormatter
  • 你尝试了什么?
  • 我已经尝试过 NumberFormatter,但我没有那么熟练地理解该做什么。我是 swift 新手
  • 你能发布你的代码吗?

标签: swift string nsnumber numberformatter


【解决方案1】:

使用NumberFormatter:

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
let number = formatter.number(from: "1,233,323.32")

【讨论】:

  • 请记住,对于使用不同分隔符进行分组和小数点的语言环境中的用户,这可能会失败。
  • 是的,但这是'StaticString'。
  • 我不明白你回复的意思。对于使用, 作为小数分隔符的语言环境中的用户,number 的值将是nil 的字符串,例如1,233,323.32
【解决方案2】:

斯威夫特 4: 所以基本上我们有一个带逗号的字符串,我们只需删除字符串中的所有逗号,然后使用 NumberFormatter 将其转换为双精度。

var newDouble = 0.0
var string = ""
string = textField.text?.replacingOccurrences(of: ",", with: "", options: NSString.CompareOptions.literal, range: nil) ?? ""
let myDouble = NumberFormatter().number(from: string)?.doubleValue
newDouble = myDouble ?? 0.0

此代码仅在只有数字和逗号时才能正常工作。

【讨论】:

    【解决方案3】:

    Swift 4.x:
    这是您使用手动方法的解决方案

    var a = "1,233,323.32"
    print(a.contains(","))
    

    检查 ',' 在字符串中出现了多少次,如下所示

    print("occurrence of ',': \(a.characters.filter {$0 == ","}.count)")
    

    如果 ',' 在字符串中出现 2 次,然后使用循环从字符串中删除 ',' 2time,如下所示

    for _ in 1...(a.characters.filter {$0 == ","}.count)  {
        a.remove(at: a.index(of: ",")!)
    }
    
    print("Ans: \( Double(a)! )")
    

    输出

    true
    occurrence of ',': 2
    Ans: 1233323.32
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多