【问题标题】:How to get the value of a formatted number如何获取格式化数字的值
【发布时间】:2018-04-09 17:02:09
【问题描述】:

我正在使用 Swift4 进行编码。有没有办法将格式化的数字转换为 Int?如何获取这种格式化数字的值进行计算?

let formattedNumber = "12,345,678,910" let newNumber = Int(formattedNumber)*2

【问题讨论】:

  • 正确的解决方案是使用NumberFormatter将字符串转换为数字。

标签: swift formatting numbers int


【解决方案1】:

您需要先删除逗号:

let number = formattedNumber.replacingOccurrences(of: ",", with: "")
let newNumber = Int(number)! * 2

【讨论】:

  • 尝试为Int(number)添加检查。
【解决方案2】:

不完美。

extension String  {

  var intValue: Int   {

    let removedCharacter  = self.characters.map{String($0)}.filter{Int($0) != nil}.joined()
    print(removedCharacter)
    if !(removedCharacter.isEmpty)  {
        return Int(removedCharacter)!
    }
    return 0
  }

  func toInt(multiplyBy  : Int) -> String  {

    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.groupingSeparator = ","
    let formattedString = formatter.string(for: intValue * multiplyBy)
    return formattedString!

  }
}

print("12,345,678,910".toInt(multiplyBy: 2))
>> 24,691,357,820

【讨论】:

  • 您可能不应该将分组分隔符硬编码为,,除非知道要解析的所有字符串都将始终包含逗号。这完全取决于如何生成原始格式化字符串。
猜你喜欢
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多