2011-09-21 28 views
4

如何獲取字符串的總字符數,考慮到它可能具有需要編碼2個代碼單元的補充字符。Java中考慮補充字符的字符串的總字符數(非代碼單元)

實施例:

String strTest = "a"; //Supplementary character 
System.out.println(strTest.length()); 

輸出:

3 

正如我們可以看到,如果我們用長度()我們得到3代替2.我想獲得是字符的數目給定的字符串,而不是代碼單元的數量。

+1

你需要一個合適的,也支持Unicode文本處理庫。 「文本」是一個非常平凡的概念,遠遠超出了一系列變量的概念。 –

+1

字符一詞有點含糊。例如,如果它在[NFD形式](http://unicode.org/reports/tr15/#Norm_Forms)中,字形é仍然可以是2個代碼點。 – McDowell

+0

我認爲我們可以理解問題是如何計算java.lang.String的代碼*點*(而不是代碼*單元*)。 – wberry

回答

9

用途:

string.codePointCount(0, string.length())