繁体   English   中英

如何使用 func 将 swift 中的数字转换为单词

[英]How to convert number to words in swift by using func

给定 integer 'number' 在 0..<< 1000 的范围内,将数字打印为一个单词。 例如给定: let number: Int = 125 output 应该是一百二十五

您可以非常有效地使用 NumberFormatter :) 这是示例

let numberFormatter = NumberFormatter()
let number = 12355532
numberFormatter.numberStyle = .spellOut
let numberAsWord = numberFormatter.string(from: NSNumber(value: number))
print(numberAsWord)

你也可以像这样在幕后扩展 NSNumber

public extension NSNumber {
    var spelledOut: String? {
        let formatter = NumberFormatter()
        formatter.numberStyle = .spellOut
        return formatter.string(from: self)
    }
}

为避免每次调用此属性时都创建数字格式化程序,您可以创建 static 格式化程序。 您还可以使计算属性泛型以支持所有数字类型:

extension NumberFormatter {
    static let spelled: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .spellOut
        return formatter
    }()
}

extension Numeric {
    var spelledOut: String? { NumberFormatter.spelled.string(for: self) }
}

let integer = 1234
let integerSpelled = integer.spelledOut  // "one thousand two hundred thirty-four"

let double = 123.4
let doubleSpelled = double.spelledOut  // "one hundred twenty-three point four"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM