我正在加载一个字符串,其中包含一些数字(全部用波斯语)到一个android TextView中。在我更改自定义字体,显示为英文编号的文本数量之前,一切都很好。
Expected : ۱۲۳۴
Received : 1234
我知道我的新字体支持波斯语号码。当我使用正确显示的数字下方的代码更改数字区域设置时。
NumberFormat numberFormat = NumberFormat.getInstance(new Locale("fa", "IR"));
String newNumber = numberFormat.format(number);
问题是我有一个字符串,很难找到数字部分并进行更改。我以前的字体工作正常,我无法理解这个字体的问题是什么。
任何想法如何全局解决所有textview的问题,或者至少是字符串?
答案 0 :(得分:2)
尝试使用此方法:
private String setPersianNumbers(String str) {
return str
.replaceAll("0", "۰")
.replaceAll("1", "۱")
.replaceAll("2", "۲")
.replaceAll("3", "۳")
.replaceAll("4", "۴")
.replaceAll("5", "۵")
.replaceAll("6", "۶")
.replaceAll("7", "۷")
.replaceAll("8", "۸")
.replaceAll("9", "۹");
}
答案 1 :(得分:1)
您可以使用
String NumberString = String.format("%d", NumberInteger);
123将成为١٢٣
答案 2 :(得分:1)
使用此代码以波斯数字显示Hegira日期:
String farsiDate = "1398/11/3";
farsiDate = farsiDate
.replace('0', '٠')
.replace('1', '١')
.replace('2', '٢')
.replace('3', '٣')
.replace('4', '٤')
.replace('5', '٥')
.replace('6', '٦')
.replace('7', '٧')
.replace('8', '٨')
.replace('9', '٩');
dateText.setText(farsiDate);
答案 3 :(得分:0)
您必须自己翻译。 TextFormat不会自动从阿拉伯数字转换为任何其他语言,因为它实际上不是人们通常想要的。每个数字都有自己的字符代码,简单地遍历字符串并用适当的波斯代码替换它们就足够了。
答案 4 :(得分:0)
private static String[] persianNumbers = new String[]{ "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" };
public static String PerisanNumber(String text) {
if (text.length() == 0) {
return "";
}
String out = "";
int length = text.length();
for (int i = 0; i < length; i++) {
char c = text.charAt(i);
if ('0' <= c && c <= '9') {
int number = Integer.parseInt(String.valueOf(c));
out += persianNumbers[number];
} else if (c == '٫') {
out += '،';
} else {
out += c;
}
}
return out;
}}
然后,您可以像在vlock下面一样使用它
TextView textView = findViewById(R.id.text_view);
textView.setText(PersianDigitConverter.PerisanNumber("این یک نمونه است ۱۲ "));
答案 5 :(得分:0)
在JS中,你可以使用下面的函数:
function toPersianDigits(inputValue: any) {
let value = `${inputValue}`;
const charCodeZero = '۰'.charCodeAt(0);
return String(value).replace(/[0-9]/g, w =>
String.fromCharCode(w.charCodeAt(0) + charCodeZero - 48),
);
}
export {toPersianDigits};