我有多个不同格式的字符串,我需要在某些TextView中显示。我无法控制这些字符串的长度或格式。他们可能有数字,只有文本,或两者兼而有之。
我的目标是在某些TextView中显示字符串,并在此过程中将任何英文数字转换为阿拉伯数字。
以下示例应阐明我的意思:
original string >> converted string
=====================================
test 123 >> test ١٢٣
test >> test
123 >> ١٢٣
我开始这样做:
txtView.setText(String.format(locale, "%d", fulltext));
但这假设您的fulltext
字符串中只包含数字。
你能建议如何解决这个问题吗?
答案 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;
};