Ios 如何将阿拉伯数字转换为英文数字?

Ios 如何将阿拉伯数字转换为英文数字?,ios,swift,Ios,Swift,我有一个UITextField,大多数用户在iphone中都有阿拉伯语和英语键盘。我的问题是,当我在文本字段中键入阿拉伯语数字时,应用程序崩溃,但当我输入英语数字时,一切正常 我的代码: func plussNumbers() { let numberFormatter: NumberFormatter = NumberFormatter() numberFormatter.locale = NSLocale(localeIdentifier: "EN") as Locale!

我有一个UITextField,大多数用户在iphone中都有阿拉伯语和英语键盘。我的问题是,当我在文本字段中键入阿拉伯语数字时,应用程序崩溃,但当我输入英语数字时,一切正常

我的代码:

func plussNumbers() {
    let numberFormatter: NumberFormatter = NumberFormatter()
    numberFormatter.locale = NSLocale(localeIdentifier: "EN") as Locale!
    var englishString = numberFormatter.number(from: "١")
    englishString = "1"

    textlable.numberOfLines = 0
    TextLable1.numberOfLines = 0


    if TextFailde.text == ""  {
        textlable.text! = textlable.text! + "\n"   +  TextFailde.text!
    }
    else {
        textlable.text! = textlable.text! + "\n" +  TextFailde.text!
        self.lblZeroUs.text! =  String(CInt(self.lblZeroUs.text!)! + CInt(self.TextFailde.text!)!) // i got error here
    }


    if TextFilde1.text == "" {
        TextLable1.sizeToFit()
        TextLable1.text! = TextLable1.text! + "\n"  +  TextFilde1.text!
    }
    else {


        TextLable1.text! = TextLable1.text! + "\n" + TextFilde1.text!
        self.lblZeroThey.text =  String(CInt(self.lblZeroThey.text!)! + CInt(self.TextFilde1.text!)!) // i got error here
    }

    previousValues.append(TextFailde.text ?? String(0))
    previousValues1.append(TextFilde1.text ?? String(0))
}
试试这个

let numberFormatter: NumberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "en")
let englishString = numberFormatter.number(from: YourArabicString) 
示例:
arabicString=“٣”


英语字符串=
“3”

从阿拉伯数字转换后的英语字符串是可选的,需要添加可选绑定

let numberFormatter: NumberFormatter = NumberFormatter()
numberFormatter.locale = NSLocale(localeIdentifier: "EN") as Locale!
if let englishString = numberFormatter.number(from: "٤") {
    print(englishString)
}
//创建一个从英语到波斯语的数字(3-4位数),例如3456->????
类func numbersToArabic(num:String)->String{
设digitsArr=Array(num)
var arabicNum=“”
对于0中的i..(阿拉伯数字)
1->(阿拉伯数字)
2->(阿拉伯数字)
谢谢,祝你快乐

但出现错误
无法在属性初始值设定项中使用实例成员'numberFormatter';属性初始值设定项在“self”可用之前运行
在函数中添加此方法。。不是类外方法OK,但当我添加此代码englishString=“1”时,我遇到了此错误
无法将类型“String”的值分配给类型“NSNumber?”
好的。。删除此行。。englishString=“1”。2.你的英语单词里已经有数字了。。您不需要再次将其分配给1。。只需按原样使用英文字符串。您需要告诉我们完整准确的错误消息,并指出导致错误的确切行。@rmaddy我为问题添加图片传递到
CInt
的字符串必须仅包含数字0-9。如果字符串中包含任何其他内容,则返回
nil
,并且您误用了
导致了您的崩溃。@rmaddy,我该怎么办?@X.BOZO:尝试转换数字,然后在其上应用操作(计算)。我得到错误
类型为“String”的值没有成员“localize”
您必须本地化您的项目(即阿拉伯语和英语)只需了解本地化的概念,那会解决你的问题
// creating a number (3-4 digit number) from english to farsi e.g. 3456 -> ????
class func numbersToArabic(num : String) -> String{
let digitsArr =  Array(num)
var arabicNum = ""
for i in 0 ..< digitsArr.count{
let digit = digitsArr[i]
let char: String = "\(digit)".localize
            print(char)
            arabicNum.append(char)
        }
        return arabicNum
    }
@just reverse the logic to obtain english to arabic
make sure that localization is there and 
the number you want to obtain are in locatized file
0 -> (arabic number)
1 -> (arabic number)
2 -> (arabic number)

thanks, happy coding