1

我正在使用以下 java 代码将数字转换为阿拉伯语

    String str = "1234-5678-9101";

    char[] chars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'};
    StringBuilder builder = new StringBuilder();

    for (int i = 0; i < str.length(); ++i) {
        if (Character.isDigit(str.charAt(i))) {
            builder.append(Chars[(int)(str.charAt(i))-48]);
        } else {
            builder.append(str.charAt(i));
        }
    }

预期的输出是٩١٠١-٥٦٧٨-١٢٣٤,但结果是١٢٣٤-٥٦٧٨-٩١٠١(反向)

4

2 回答 2

1

感谢大家,使用以下代码解决了此问题:

String str = "1234-5678-9101";

char[] chars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'};
StringBuilder builder = new StringBuilder();

for (int i = 0; i < str.length(); ++i) {
    if (Character.isDigit(str.charAt(i))) {
        builder.append(Chars[(int)(str.charAt(i))-48]);
    } else {
        builder.append("\u202A");
        builder.append(str.charAt(i));
    }
}
于 2013-04-15T04:48:20.843 回答
0

代码有效,这很明显。但在我看来,破折号 ( -) 违反了从右到左的阿拉伯语书写规则——似乎每组数字都是正确的,但整体顺序却不正确。

expected: ٩١٠١-٥٦٧٨-١٢٣٤
actual: ١٢٣٤-٥٦٧٨-٩١٠١

我无能为力,因为这就是我对阿拉伯字母的了解。希望这可以帮助。

于 2013-04-14T10:49:01.093 回答