将一个印地语语言编号转换为阿拉伯语语言编号

iOS*_*eam 0 nsnumberformatter ios swift

在Swift中遇到过一个问题 印地语数字集整数值

这是关于我们如何将印地语翻译成英语的任何数字值.

很想知道如何将一个语言编号转换为另一个语言编号

例如:尝试将印地语语言编号转换为阿拉伯语

这是我在操场上尝试过的代码:

let string = "?"

let intParse1 = Int(string)

let numberFormat = NumberFormatter()
numberFormat.locale = Locale(identifier: "ar")

if let getOP = numberFormat.number(from: string) {
    print("output is: ", getOP)
}
Run Code Online (Sandbox Code Playgroud)

以下是仅以英文显示的输出

在此输入图像描述

我已经搜索过这个问题,但没有找到这种特定的解决方案,所以发布了一个新的问题.

注意:不寻找任何静态转换扩展或那种功能.

编辑: 我不想要这种解决方案

在Swift中将arabic String转换为英文数字

编辑2:

我想知道为什么我们必须首先将它转换为数字,然后将其转换为阿拉伯语?,意味着有必要先将它转换为英语吗?

Roc*_*cky 6

说明: NumberFormatter将数字转换为另一种语言编号,而不是将语言字符串转换为其他语言.首先,我们必须将一个语言编号转换为另一个语言编号.

Doc说明: 参考

NumberFormatter的实例格式化包含NSNumber对象的单元格的文本表示,并将数值的文本表示转换为NSNumber对象.表示包括整数,浮点数和双精度数; 浮点数和双精度数可以格式化为指定的小数位.NumberFormatter对象还可以对单元格可以接受的数值施加范围.

直接在Swift 4上使用此扩展:

extension String {
    func convertToArbic () -> String? {
        let formatter = NumberFormatter()
        formatter.locale = Locale(identifier: "hi")
        guard let number = formatter.number(from:self ) else{
            return nil
        }
        formatter.locale = Locale(identifier: "ar")
        guard let number2 = formatter.string(from: number) else{
            return nil
        }
        return number2
    }
}

// use
let string = "?"
if let arbNumber = string.convertToArbic() {
    print(arbNumber)
}
else{
    print("Unable to get arabic number")
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述