2017-02-13 93 views
2

我有一個EditText來獲取描述,並且想要設置最大長度爲145個字符。 我已經在XML中設置了最大長度145。這適用於英語。 但對於英語以外的其他語言,如Marathi,Hindi等,它無法正常工作。我將每個符號都作爲單獨的字符計數如何統計android中的unicode字符串(印地文/馬拉地語)中的字符

例如:「व्ही」

這被認爲是一個字符在印地文,它的長度應爲1,但它返回我長2

我見過的解決方案this link

但它不適用於Hindi/Marathi語言,因爲它無法檢測到連接的字符。如何檢測連接的字符?

感謝提前:)

回答

0

PLZ試試這個代碼

String str = "व्ही"; 
int count = 0; 

for(int i=0; i<str.length(); i++) 
{ 
    if(!isMark(str.charAt(i))) 
     count++; 
} 

textview.setText(count); 
0

試試這個:

import java.text.BreakIterator; 
import java.util.Locale; 

public class MyClass { 

    private int graphemeClusterCount(Locale locale) { 

     String text = "व्ही"; 

     BreakIterator breakIterator = BreakIterator.getCharacterInstance(locale); 

     breakIterator.setText(text); 

     int count = 0; 

     int start = breakIterator.first(); 
     for (int end = breakIterator.next(); 
      end != BreakIterator.DONE; 
      start = end, end = breakIterator.next()) { 

      count++; 
     } 

     return count; 
    } 
} 

一些參考:放在所謂的石墨烯集羣

Unicode的常見問題: http://unicode.org/faq/char_combmark.html#7

從Android文檔10

示例代碼:https://developer.android.com/reference/java/text/BreakIterator.html

ICU有BreakIterator實現,也:http://site.icu-project.org/,您可以在搖籃中導入:

compile 'com.ibm.icu:icu4j:58.2' 
相關問題