Android中的BreakIterator错误地计算字符

时间:2016-12-21 19:01:28

标签: java android internationalization hindi icu4j

我正在使用otherwise来计算字符串中可见字符的数量。这非常适合英语。但就印地语而言,它并没有像预期的那样发挥作用。

以下字符串的长度为3,但在视觉上被视为单个字符。

BreakIterator

当我使用ज्य时,我希望它将其视为一个单元,但它将其视为2个单位。以下是我的代码:

BreakIterator

理想情况下, final String text = "ज्य"; final Locale locale = new Locale("hi","IN"); final BreakIterator breaker = BreakIterator.getCharacterInstance(locale); breaker.setText(text); int start = breaker.first(); for (int end = breaker.next(); end != BreakIterator.DONE; start = end, end = breaker.next()) { final String substring = text.substring(start, end); } 循环应该在ONCE执行,start = 0和end = 3;但对于上面的字符串,它执行了两次(start = 0,end = 2和start = 2,end = 3)。

如何让for完全正常工作?

更新

上面的代码在作为JAVA程序运行时非常有效。只有在ANDROID中使用它才会出错。

由于这只发生在Android中,我在android中报告了一个错误:https://code.google.com/p/android/issues/detail?id=230832

1 个答案:

答案 0 :(得分:0)

我认为你需要玩unicode字符

Oracle Doc. for Character Boundaries

ifort /openmp /F999999999 Main.f90