Great, thanks! Mark
*— Il meglio è l’inimico del bene —* On Thu, Jan 27, 2011 at 12:50, Xueming Shen <xueming.s...@oracle.com> wrote: > Mark, > > The high/lowSurrogate(codepoint) pair has been added in jdk1.7 already. > > > http://download.java.net/jdk7/docs/api/java/lang/Character.html#highSurrogate(int)<http://download.java.net/jdk7/docs/api/java/lang/Character.html#highSurrogate%28int%29> > > http://download.java.net/jdk7/docs/api/java/lang/Character.html#lowSurrogate(int)<http://download.java.net/jdk7/docs/api/java/lang/Character.html#lowSurrogate%28int%29> > > I submitted CR#7015408 for the third (formatting) one. > > -Sherman > > > On 01/26/2011 01:36 PM, Mark Davis ☕ wrote: > > Ok, now I understand. With that change, the situation is much better. It > doesn't fully satisfy RL1.1, because you can't use hex codepoint numbers > -- you have to use the fairly ugly workaround of > > String hexPattern = codePoint <= 0xFFFF > > ? String.format("\\u%04x", codePoint) > > : String.format("\\u%04x\\u%04x", (int) Character.toChars(codePoint)[0], ( > int) Character.toChars(codePoint)[1]); > > > BTW, in plain Java I really miss a few of the ICU4J routines, like: > > > - char c1 = UTF16.getLeadSurrogate(codePoint); > - char c2 = UTF16.getLeadSurrogate(codePoint); > - String s = UTF16.valueOf(codePoint); > > You can do them in plain Java, as in the above expression, but they're > awkward and not as clear to read. And instead of the third one, the best I > see in plain Java is the following, which is really pretty ugly (is there > any better way?). > > > String s = new StringBuilder().appendCodePoint(codePoint).toString(); > > > Mark > > >