如何转换Bengali Unicode数字?

时间:2016-05-04 07:43:53

标签: java unicode

如何在Java中将孟加拉语Unicode数值(০,১,২,৩,...,৮,৯)转换为(0,1,2,3,...,8,9)

5 个答案:

答案 0 :(得分:7)

使用Character.getNumericValue获取与字符关联的整数值:

System.out.println(Character.getNumericValue('০'));
System.out.println(Character.getNumericValue('১'));
// etc.

输出:

0
1

Ideone demo

此处其他方法的优势在于,这适用于任何数字字符,而不仅仅是孟加拉语。

答案 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);
}

DEMO

示例代码

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

这不仅适用于孟加拉语数字,还适用于所有语言的数字。