如何在 Kotlin 中将波斯/阿拉伯数字转换为英文数字?

10 浏览
0 Comments

如何在 Kotlin 中将波斯/阿拉伯数字转换为英文数字?

这个问题已经有了答案
Java字符串转换为日期
如何将字符串转换为另一种语言环境?

本帖子已于去年被编辑并提交审核,但未能重新开启帖子:

原关闭原因未解决

我如何在Kotlin中将波斯语/阿拉伯语数字转换为英语?我在java中看到了类似的问题,但它不符合我的要求。我想将日期作为字符串传递给Web服务。当我在使用波斯语本地化数字的设备中获取日期时,数字是波斯语的,服务器无法将此字符串转换为日期时间。所以我需要转换所有数字为英语。
以下是我在设备中接收到的以波斯语本地化的日期:

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

这些是波斯语/阿拉伯语数字:

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

我需要在Kotlin中编写一个函数来执行此操作。

admin 更改状态以发布 2023年5月24日
0
0 Comments

最后下面的函数解决了我的问题:

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
        }

0
0 Comments

您可以使用NumberFormat,并提供适当的区域设置。

//explode date by slash character
var delimiter = "/"
val parts = yourDate.split(delimiter) 
// then you check every element in parts array
NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH);
...
for (int i = 0; i < a.length; ++i) {
    output.println(nf.format(myNumber[i]) + "; ");
}

参考文献:NumberFormat文档Locale文档

0