在文本 Swift,IOS 中将英文数字更改为波斯数字

Far*_*esh 2 ios swift

嗨,我如何在 IOS Swift 中用字符串中的波斯数字替换英文数字

"This is a english text with this numbers 09122223231 34322 "
Run Code Online (Sandbox Code Playgroud)

Far*_*esh 7

用波斯语中的 eq 替换字符串中的数字

func convertToPersian(inputStr:String)-> String {
    let numbersDictionary : Dictionary = ["0" : "?","1" : "?", "2" : "?", "3" : "?", "4" : "?", "5" : "?", "6" : "?", "7" : "?", "8" : "?", "9" : "?"]
    var str : String = inputStr

    for (key,value) in numbersDictionary {
        str =  str.replacingOccurrences(of: key, with: value)
    }

    return str
}
Run Code Online (Sandbox Code Playgroud)

将“farshad 我认为数字 11 33 42 3343 适合您”更改为“farshad 我认为数字 ?? ?? ?? ???? 适合您”

如果您的文本是只有数字字符的字符串,您可以使用此方法:

func convertEngNumToPersianNum(inputStr:String)->String{
    let format = NumberFormatter()
    format.locale = Locale(identifier: "fa_IR")
    let number =   format.number(from: inputStr)
    let faNumber = format.string(from: number!)
    return faNumber!
}
Run Code Online (Sandbox Code Playgroud)

然后你可以将“091233344455”转换为“????????????”

你也可以为 String 编写一个扩展来简化这样的使用

斯威夫特 3

    extension String {
    func convertEngNumToPersianNum()->String{
        let format = NumberFormatter()
        format.locale = Locale(identifier: "fa_IR")
        let number =   format.number(from: self)

        let faNumber = format.string(from: number!)
        return faNumber!

    }
    func convertToPersian()-> String {
        let numbersDictionary : Dictionary = ["0" : "?","1" : "?", "2" : "?", "3" : "?", "4" : "?", "5" : "?", "6" : "?", "7" : "?", "8" : "?", "9" : "?"]
        var str : String = self

        for (key,value) in numbersDictionary {
            str =  str.replacingOccurrences(of: key, with: value)
        }

        return str
    } 
}
Run Code Online (Sandbox Code Playgroud)

有时您想将数字转换为托曼/里亚尔...您可以使用此将数字转换为货币

  extension Int {
    var asCurrency:String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = Locale(identifier: "fa_IR")
        formatter.currencySymbol=""
        if(self != 0)        {
            return  ("\(formatter.string(from: self as NSNumber)!) ?????"
        }
        else{
            return ""
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

用法 :

"091233344455".convertEngNumToPersianNum()  //"????????????"

"091233344455".convertToPersian()  //"????????????"

"?? ??? ?? 11 33 42 3343 ??? ?????".convertToPersian() //?? ??? ???? ?? ?? ???? ??? ?????

111222333.asCurrency //??????????? ?????
Run Code Online (Sandbox Code Playgroud)