2017-08-10 58 views
-1

嗨,我如何可以替换波斯数字英文数字的字符串中的IOS斯威夫特更改英语数字以文本斯威夫特波斯数字,IOS

"This is a english text with this numbers 09122223231 34322 " 
+1

嗨。请阅读[如何提问](https://stackoverflow.com/help/how-to-ask),然后分享[最小,完整和可验证示例](https://stackoverflow.com/help/mcve)你的代码或者你迄今为止所做的或尝试解决的问题。 –

回答

1

波斯语

其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 
} 

这种变化“farshad我觉得11号33 42 3343是适合你”到“farshad我觉得11号33 42 3343是适合你”

如果你的文字,只有numbe字符串[R字符,你可以使用这个方法:

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! 
} 

,那么你可以将“091233344455”到“091233344455”

你也可以写一个扩展的字符串,以简化使用这样的事情

SWIFT 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 
    } 
} 

你想转换数要托曼/里亚尔有些时候...... 你可以用它来数转换为货币

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 "" 
     } 
    } 
} 

用法:

"091233344455".convertEngNumToPersianNum() //"۰۹۱۲۳۳۳۴۴۴۵۵" 

"091233344455".convertToPersian() //"۰۹۱۲۳۳۳۴۴۴۵۵" 

"به نظر من 11 33 42 3343 عدد خوبیه".convertToPersian() //به نظر من۱۱ ۳۳ ۴۲ ۳۳۴۳ عدد خوبیه 

111222333.asCurrency //۱۱۱،۲۲۲،۳۳۳ تومان 
3

一个小功能,以英文数字转换为波斯语: -

func convertEngNumToPersianNum(num: String)->String{ 
    //let number = NSNumber(value: Int(num)!) 
    let format = NumberFormatter() 
    format.locale = Locale(identifier: "fa_IR") 
    let number = format.number(from: num) 
    let faNumber = format.string(from: number!) 
    return faNumber! 

} 
let string = "This is a english text with this numbers 09122223231 34322 " 
if let number = Int(string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()) { 
let perNum = convertEngNumToPersianNum(num: String(number)) 
    print(perNum) 
} 

工作证明: - enter image description here