快速将带逗号的字符串转换为int

时间:2018-12-04 02:59:28

标签: ios swift

let y = "1,312,000.99" let z = (y as NSString).intValue

我想让z等于1312000。所以基本上:

  1. 字符串应转换为int
  2. 该整数不应包含逗号
  3. 小数点后的任何内容都应忽略。

2 个答案:

答案 0 :(得分:1)

  
      
  1. 字符串应转换为int
  2.   
  3. 该整数不应包含逗号
  4.   
  5. 小数点后的任何内容都应忽略。
  6.   

我认为您需要反向进行这些操作:

  1. 摆脱小数点后的所有内容
  2. 删除非数值
  3. 将其转换为Int

您可以通过多种方式进行此操作

您可以使用CharacterSet.decimalDigits,类似...

"1,312,000.99".components(separatedBy: CharacterSet.decimalDigits.inverted).joined()

这有点混乱,因为我还没有做的一件事就是删除.99,但是可以这样做...

var value = "1,312,000.99"
value = String(value[value.startIndex..<value.firstIndex(of: ".")!])

注意:我不是要检查firstIndex是否为nil,所以您需要对此进行补偿。

另一种可能更好的解决方法是利用NumberFormatter

let formater = NumberFormatter()
formater.numberStyle = .decimal
formater.locale = Locale(identifier: "en_AU")
let number = formater.number(from: "1,312,000.99")

然后您可以将其强制转换为Int

let intValue = Int(number!)

再次检查number,因为它可能是nil

答案 1 :(得分:0)

尝试这样的代码:

//Create a NumberFormatter that takes input strings with comma thousands separators and at least 1 decimal place
let inputFormatter = NumberFormatter()
inputFormatter.format = "###,###,###,###.#"
inputFormatter.locale = Locale(identifier:  "en_US_POSIX")

var numberString = "1,234,567.88"

//Convert the input string to an Int (which truncates the decimal portion)
if let value = inputFormatter.number(from: numberString)?.intValue {
    print(value)
    //print( outputString)
} else {
    print("Can't convert")
}