如何在Java中将孟加拉语Unicode数值(০,১,২,৩,...,৮,৯)
转换为(0,1,2,3,...,8,9)
?
答案 0 :(得分:7)
使用Character.getNumericValue
获取与字符关联的整数值:
System.out.println(Character.getNumericValue('০'));
System.out.println(Character.getNumericValue('১'));
// etc.
输出:
0
1
此处其他方法的优势在于,这适用于任何数字字符,而不仅仅是孟加拉语。
答案 1 :(得分:4)
一个简单的解决方案将'০'
的值减去其余部分,因为它们在Unicode表中是连续的,并添加'0'
:
public static void main(String[] args) {
char[] bengaliDigits = {'০','১','২','৩','৪','৫','৬','৭','৮','৯'};
for (char bengaliDigit : bengaliDigits) {
char digit = (char) (bengaliDigit - '০' + '0');
System.out.print(digit);
}
}
这将打印0123456789
。
答案 2 :(得分:3)
试试这个:
/**
*
* 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 // char\n", bengaliToArabic('১'));
System.out.format("bengaliToInt('১') == %s // int\n", bengaliToInt('১'));
bengaliToArabic('১') == 1 // char
bengaliToInt('১') == 1 // int
答案 3 :(得分:3)
使用 -
Character.getNumericValue(' 0')
。
它将与语言无关,因为它使用字符的unicode进行转换
答案 4 :(得分:2)
这里有很多解决方案建议简单地减去字符০
的Unicode值以获得数值。这是有效的,但只有当你知道这个数字实际上是一个孟加拉语数字时才会起作用。还有很多其他数字,Java提供了一种使用Character.getNumericValue()
和Character.digit()
处理此问题的标准方法:
String s = "123০১২৩৪৫৬৭৮৯";
for(int i = 0 ; i < s.length() ; i++) {
System.out.println(Character.digit(ch, 10));
}
这不仅适用于孟加拉语数字,还适用于所有语言的数字。