簡體   English   中英

Android中的BreakIterator錯誤計數字符

[英]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字符

Oracle文檔 用於角色邊界

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM