【发布时间】:2021-01-01 17:04:06
【问题描述】:
我有一个字符串,它总是转换成 this 这样的字符串,用户输入一个数字并始终从小数位开始,
所以我有 0.01 -> 0.10 -> 1.00
但我不想要这样的东西,我只想转换用户输入的内容
这是我现有的将 100000 转换为 1,000.00 的代码
func convertme(string: String) -> String{
var number: NSNumber!
let formatter = NumberFormatter()
formatter.numberStyle = .currencyAccounting
formatter.currencySymbol = ""
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
var amountWithPrefix = string
// remove from String: "$", ".", ","
let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, string.count), withTemplate: "")
print("amountWithPrefix", amountWithPrefix)
let double = (amountWithPrefix as NSString).doubleValue
number = NSNumber(value: (double / 100))
// if first number is 0 or all numbers were deleted
guard number != 0 as NSNumber else {
return ""
}
return formatter.string(from: number)!
}
预期结果:
我想在不添加额外数据的情况下格式化字符串上的数字,我想把 (100000. 变成 100,000.) (100000.0 变成 100,000.0
我希望我的 100000 转换为 100,000,并且如果用户也输入小数,则只有小数,所以当用户输入 100000.00 时,它将转换为 100,000.00。
PS。我有一个只接受数字但不接受小数的正则表达式,我怎样才能让它也接受小数?
【问题讨论】:
-
@LeoDabus 不,不是,我已经解释了为什么我的预期输出与该链接不同的问题。我在我现有的代码中展示了它,输出是你给出的链接中的答案。
标签: swift number-formatting nsnumberformatter