如何在 Java 中将孟加拉语 Unicode 数值(০,১,২,৩,...,৮,৯)
转换为(0,1,2,3,...,8,9)
?
使用 Character.getNumericValue
获取与字符关联的整数值:
System.out.println(Character.getNumericValue('০'));
System.out.println(Character.getNumericValue('১'));
// etc.
输出:
0
1
Ideone demo
与其他方法相比,这里的优势在于这适用于任何数字字符,而不仅仅是孟加拉语。
一个简单的解决方案将'০'
的值减去其余部分,因为它们在 Unicode 表中是连续的,并添加'0'
:
public static void main(String[] args) {
char[] bengaliDigits = {'০','১','২','৩','৪','৫','৬','৭','৮','৯'};
for (char bengaliDigit : bengaliDigits) {
char digit = (char) (bengaliDigit - '০' + '0');
System.out.print(digit);
}
}
这将打印0123456789
。
使用 -
Character.getNumericValue('০'(.
无论语言如何,它都可以工作,因为它使用字符的 unicode 进行转换
试试这个:
/**
*
* Convert a bengali numeral to its arabic equivalent numeral.
*
* @param bengaliNumeral bengali numeral to be converted
*
* @return the equivalent Arabic numeral
* @see #bengaliToInt
*/
public static char bengaliToArabic(char bengaliNumeral) {
return (char) (bengaliNumeral - '০' + '0');
}
public static int bengaliToInt(char bengaliNumeral) {
return Character.getNumericValue(bengaliNumeral);
}
演示
示例代码
System.out.format("bengaliToArabic('১') == %s // charn", bengaliToArabic('১'));
System.out.format("bengaliToInt('১') == %s // intn", bengaliToInt('১'));
输出
bengaliToArabic('১') == 1 // char
bengaliToInt('১') == 1 // int
这里的许多解决方案建议简单地减去字符০
的 Unicode 值以获得数值。这有效,但只有在您知道该数字实际上是孟加拉语数字时才有效。还有很多其他的数字,Java提供了一种标准化的方式来使用Character.getNumericValue()
和Character.digit()
来处理这个问题:
String s = "123০১২৩৪৫৬৭৮৯";
for(int i = 0 ; i < s.length() ; i++) {
System.out.println(Character.digit(ch, 10));
}
这不仅适用于孟加拉语数字,也适用于所有语言的数字。