gpt4 book ai didi

ios - NSNumberFormatter SpellOutStyle 为 "and"

转载 作者:行者123 更新时间:2023-11-29 00:57:33 26 4
gpt4 key购买 nike

是否有类似于 SpellOutStyle 的 NSNumberFormatter 带有“and”我正在尝试解决 Project Euler #17,它需要用“and”写出数字

例如,556 就是五百五十六

使用 NSNumberFormatter,我有以下代码

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
let number = formatter.stringFromNumber(556)!
print(number) //prints five hundred fifty-six

NSNumberFormatterStyle.SpellOutStyle 未列出“和”。我可以使用其他方法来打印“和”吗?

最佳答案

“五百五十六”对我来说是正确的英语。但是,没有任何语言环境可以让 NSNumberFormatter 返回该结果。您可以通过子类化 NSNumberFormatter 来推出自己的:

class MyNumberFormatter: NSNumberFormatter {
override init() {
super.init()
self.numberStyle = .SpellOutStyle
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override func stringFromNumber(number: NSNumber) -> String? {
// Make sure the number is an integer. Otherwise use NSNumberFormatter default formatting
guard ceil(number.doubleValue) == floor(number.doubleValue) else {
return super.stringFromNumber(number)
}

switch (number.integerValue - (number.integerValue % 100), abs(number.integerValue % 100)) {
case let (bigUnit, smallUnit) where abs(bigUnit) >= 100 && 0 < smallUnit && smallUnit < 100:
return super.stringFromNumber(bigUnit)! + " and " + super.stringFromNumber(smallUnit)!
default:
return super.stringFromNumber(number)
}
}
}

// Usage:
let formatter = MyNumberFormatter()
print(formatter.stringFromNumber(556)!)

显然,这仅适用于整数和英语语言环境。

关于ios - NSNumberFormatter SpellOutStyle 为 "and",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com