将整数映射到 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} // "१", "२", "३", "४", "५", "६", "७", "८", "९", "०"]
将 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} // "१", "२", "३", "४", "५", "६", "७", "८", "९", "०"]