我有 2 个函数正在转换字符串(作为字符串传递的十进制数)本地化数字,反之亦然。这是代码:
static func localizedNumberForText(text: String) -> String {
let num = Double(text)
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 30;
if num != nil {
return formatter.string(from: num! as NSNumber)!
} else {
return text
}
}
static func stringFromLocalizedNumber(text: String) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 30;
let num = formatter.number(from: text)
if let number = num {
return String(describing: number)
} else {
return text
}
}
这适用于静态值,但我有一个挑战,即UITextField
在编辑时我需要以不同的方式格式化本地化字符串。这是有效的示例: - 我有数字 123456789,它在显示时使用千位分隔符进行了本地化,如下所示:123.456.789
但是当用户UITextField
从这个字符串中删除最后一个字符时,它变成 123.456.78 并且在函数 stringFromLocalizedNumber 中无法num
从文本中获取,因为格式化的文本没有正确本地化。知道如何解决这个问题吗?
我想要实现的是,在用户删除一个数字字符或添加一个以删除不正确的本地化并应用正确将此字符串解析为数字的新本地化之后。