androidkotlinnumber-formattingfarsinumber-systems

How to convert Persian (Farsi) and Arabic numbers to English numbers in Kotlin?


I saw similar qustions in Java but It doesn't match my requirement. I want to pass Date as String to web service. when I get Date in devices that uses Persian, localized digits are Persian and the server can't convert this String to DateTime. So I need to convert all digits to English.

Here is the Date that I receive in Devices with Persian locale:

"۲۰۲۰/۰۸/۲۱"

and these are Persian (Farsi) digits:

(۰ -> 0)  (۱ -> 1) (۲ -> 2) (۳ -> 3) (۴ -> 4) (۵ -> 5) (۶ -> 6) (۷-> 7) (۸ -> 8) (۹ -> 9)

I need a fun in Kotlin to perform this.


Solution

  • Finally bellow function solved my problem:

    fun PersianToEnglish(persianStr: String):String {
                var result = ""
                var en = '0'
                for (ch in persianStr) {
                    en = ch
                    when (ch) {
                        '۰' -> en = '0'
                        '۱' -> en = '1'
                        '۲' -> en = '2'
                        '۳' -> en = '3'
                        '۴' -> en = '4'
                        '۵' -> en = '5'
                        '۶' -> en = '6'
                        '۷' -> en = '7'
                        '۸' -> en = '8'
                        '۹' -> en = '9'
                    }
                    result = "${result}$en"
                }
                return result
            }