NSNumberFormatter SpellOutStyle "and"
NSNumberFormatter SpellOutStyle with "and"
是否有类似于 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 未列出 "and"。
我可以使用其他方法来打印 "and"?
"five hundred and fifty-six" 对我来说是正确的英语。但是,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)!)
显然,这仅适用于整数和英语语言环境。
是否有类似于 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 未列出 "and"。 我可以使用其他方法来打印 "and"?
"five hundred and fifty-six" 对我来说是正确的英语。但是,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)!)
显然,这仅适用于整数和英语语言环境。