let y = "1,312,000.99"
let z = (y as NSString).intValue
我想让z等于1312000
。所以基本上:
答案 0 :(得分:1)
- 字符串应转换为int
- 该整数不应包含逗号
- 小数点后的任何内容都应忽略。
我认为您需要反向进行这些操作:
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")
}