将字符串中的英文数字转换为阿拉伯数字

时间:2015-08-07 18:40:50

标签: android textview string-formatting

我有多个不同格式的字符串,我需要在某些TextView中显示。我无法控制这些字符串的长度或格式。他们可能有数字,只有文本,或两者兼而有之。

我的目标是在某些TextView中显示字符串,并在此过程中将任何英文数字转换为阿拉伯数字。

以下示例应阐明我的意思:

original string   >> converted string
=====================================
test 123          >> test ١٢٣
test              >> test
123               >> ١٢٣

我开始这样做:

txtView.setText(String.format(locale, "%d", fulltext));

但这假设您的fulltext字符串中只包含数字。

你能建议如何解决这个问题吗?

4 个答案:

答案 0 :(得分:13)

让我们说你的全文字符串是这个

String fulltext = "1a2b3c";

用相应的阿拉伯数字替换所有数字的实例

fulltext = fulltext.replace("1","١").replace("2","٢").replace("3","٣");

等。希望这就是你的意思

答案 1 :(得分:2)

String val="123";char[] arabicChars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'};
StringBuilder builder = new StringBuilder();
for(int i =0;i<val.length();i++){
     if(Character.isDigit(val.charAt(i))){
          builder.append(arabicChars[(int)(val.charAt(i))-48]);
     }
     else{
          builder.append(val.charAt(i));
     }
 }
system.out.println(""+builder.toString());

答案 2 :(得分:0)

如果您想以波斯语或阿拉伯语格式查看您的号码,则必须使用波斯语或阿拉伯语字体。使用android studio的默认字体,您可以看到英文格式。所以这样做: 1.转到此地址 File \ new \ folder \ assets文件夹 您可以创建一个名为fonts的文件夹 2.对于要更改的textview或edittext,它的字体应该是这样的

字体face = Typeface.createformatassest(getassest(),&#34; fonts / BZAR.TTF&#34;); Textview.settypeface(face);

字体是资产文件夹中的文件夹。

如果您使用波斯语或阿拉伯语字体,您的数字格式将变为阿拉伯语格式。

答案 3 :(得分:0)

您可以使用:(ES6)

export const eArabic = (text) => {

    let newString = "";

    const arabicChars = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];

    [...`${text}`].map(item => {
        if (!isNaN(parseInt(item))) {

            newString += arabicChars[parseInt(item)];
        } else {
            newString += item;
        }
    });

    return newString;
};