Java:使用unicode overline显示平方根时的字符串长度?
在
Java中我创建了一个使用unicode和overline的字符串,因为我试图显示数字的平方根.我需要知道一些格式问题的字符串长度.在unicode中使用组合字符时,查找字符串长度的常用方法似乎失败,如下例所示.任何人都可以帮我找到随机数在平方根中的第二个字符串的长度,或者如何更好地进行平方根显示的提示?
String s = "u221A"+"12"; String t = "u221A"+"1"+"u0305"+"2"+"u0305"; System.out.println(s); System.out.println(t); System.out.println(s.length()); System.out.println(t.length()); 感谢您的帮助,我在谷歌上找不到任何相关内容. 解决方法
它们不会失败,报告字符串长度为Unicode字符数[*].如果您需要其他行为,则需要明确定义“字符串长度”的含义. 当您对用于显示目的的字符串长度感兴趣时,通常您对计算像素(或其他逻辑/物理单位)感兴趣,并且这是显示层的责任(首先,对于不同的字符,您可能有不同的宽度,如果字体不是等宽的). 但是,如果您只想计算graphemes的数量(“在特定书写系统的上下文中,这是一个极其独特的写作单元”),here是一个很好的指南,包含代码和示例.复制 – 修剪 – 从那里粘贴相关代码,我们有这样的事情: public static int getGraphemeCount(String text) { int graphemeCount = 0; BreakIterator graphemeCounter = BreakIterator.getCharacterInstance(); graphemeCounter.setText(text); while (graphemeCounter.next() != BreakIterator.DONE) graphemeCount++; return graphemeCount; } 请记住:以上使用默认语言环境.例如,更灵活且更健壮的方法将接收显式语言环作为参数并改为调用 [*]确切地说,正如注释中所指出的,String.length()计算Java字符,它们实际上是UTF-16编码中的代码单元.这相当于仅当我们在BMP内时才计算Unicode字符. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |