如何转换孟加拉语 Unicode 数字



如何在 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));
}

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

最新更新