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

Convert English numbers in a String to Arabic numbers

我有多个不同格式的字符串需要在某些 TextView 中显示。我无法控制这些字符串的长度或格式。他们可以只包含数字、纯文本或两者的组合。

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

下面的例子应该可以阐明我的意思:

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

我是这样开始的:

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

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

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

假设您的全文字符串是这样的

String fulltext = "1a2b3c";

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

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

等希望这就是你的意思

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

字体face=Typeface.createformatassest(getassest(),"fonts/BZAR.TTF"); Textview.settypeface(脸);

Fonts 是我在资产文件夹中的文件夹。

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

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());

你可以使用这个:(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;
};