我正在编写一个Java程序,有一个特定的需求需要按Unicode码点将字符串按字典顺序排序。这与使用String.compareTo()
进行比较在处理基本多文种平面之外的值时是不同的。String.compareTo()
按16位char
值的字典顺序比较字符串。要看到这不等价,请注意U+FD00阿拉伯语连字哈希与耶独立形式小于U+1D11E音乐符号G大调谱号,但Java String
对象中阿拉伯字符的"\uFD00"
比谱号的代理对"\uD834\uDD1E"
更大。
如果必要,我可以手动使用String.codePointAt()
和Character.charCount()
循环遍历代码点并自行进行比较。是否有API函数或其他更"规范"的方法可以做到这一点?
codePointAt
和手动迭代更好的方法...很抱歉没有能够给你一个更加规范的方法,但听起来你已经在正确的方向上了。 - Jon Skeetjava,text.Collator
。 - user207421