将整数映射到 Swift 中的字符串

Mapping Integer to String in Swift

Integer 映射到 String 的最简单方法是什么? 这是一个整数数组。

let englishIntLiterals: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

我想将每个数字的出现映射到它们的尼泊尔等效数字,它表示为一个字符串数组。

let nepaliLiterals: [String] = ["१", "२", "३", "४", "५", "६", "७", "८", "९", "०"]

我需要1换成等等。 我知道有一个解决函数的方法,但我正在寻找一个高阶函数解决方案,我一直无法弄清楚。

尝试以下操作。我做了一个小扩展,应该可以完成您正在寻找的工作。我还扩展了它处理大数和负数的能力。

extension Int{

    func toNepali() -> String{
        let isNegative = self < 0
        let number = abs(self)
        let nepaliLiterals: [String] = [ "०","१", "२", "३", "४", "५", "६", "७", "८", "९"]
        if number > 9{
            var s = isNegative ?  "-" : ""
            for i in "\(number)"{
                s += "\(nepaliLiterals[Int(String(i))!])"
            }
            return  s
        }else{
            return isNegative ? "-\(nepaliLiterals[number])" : nepaliLiterals[number]        
        }
    }
}

测试:

let englishIntLiterals: [Int] = [-10,0,1,2,3,4,5,6,7,8,9,100]
for i in englishIntLiterals{
    print(i.toNepali())
}

输出:

-१०
०
१
२
३
४
५
६
७
८
९
१००

您可以使用固定区域数字格式化程序来显示本地化的整数:

extension Formatter {
    static let numberNepal: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.locale = Locale(identifier: "ne_NP")
        formatter.numberStyle = .decimal
        return formatter
    }()
}
extension BinaryInteger {
    var nepaliFormatted: String {
        return Formatter.numberNepal.string(for: self)!
    }
}

1234567890.nepaliFormatted  // "१,२३४,५६७,८९०"

let englishIntLiterals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

let nepaliLiterals = englishIntLiterals.map{[=12=].nepaliFormatted}  // "१", "२", "३", "४", "५", "६", "७", "८", "९", "०"]