[英]BreakIterator in Android counts character wrongly
我正在使用BreakIterator
來計算字符串中可見字符的數量。 這非常適合英語。 但是,如果使用印地語,則無法正常工作。
下面的字符串的長度為3,但在視覺上被視為單個字符。
ज्य
當我使用BreakIterator
,我希望它會將其視為一個單元,但會將其視為2個單元。 下面是我的代碼:
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);
}
理想情況下,應在start = 0和end = 3的情況下一次執行for
循環。 但是對於上面的字符串,它執行了兩次(start = 0,end = 2和start = 2,end = 3)。
我怎樣才能讓BreakIterator
正常工作?
更新:
上面的代碼作為JAVA程序運行時,效果很好。 僅當在ANDROID中使用時,它才會出現異常。
由於這種情況僅發生在Android中,因此我報告了一個Android中的錯誤: https : //code.google.com/p/android/issues/detail? id = 230832
我認為您需要使用unicode字符
final String text = "\u091C\u094D\u092F";
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);
System.out.println(substring);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.