Java String中的上标
Java String是否支持String中的上标? 如果是,那么我该如何使用它,我已经搜索了网络和API,但无法弄清楚如何将它用于我的目的
虽然这将打印在网页上,但我不能在这里使用html标签,请提出任何建议
查看java.text.AttributedString,它支持下标等。 例如,在你的paintComponent()中你可以去:
public void paintComponent(Graphics g) { super.paintComponent(g); AttributedString as = new AttributedString("I love you 104 gazillion"); as.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, 13, 14); as.addAttribute(TextAttribute.FOREGROUND, Color.RED, 2, 6); g.drawString(as.getIterator(), 20, 20); }
以防有人使用theese手工制作的function:
public static String superscript(String str) { str = str.replaceAll("0", "⁰"); str = str.replaceAll("1", "¹"); str = str.replaceAll("2", "²"); str = str.replaceAll("3", "³"); str = str.replaceAll("4", "⁴"); str = str.replaceAll("5", "⁵"); str = str.replaceAll("6", "⁶"); str = str.replaceAll("7", "⁷"); str = str.replaceAll("8", "⁸"); str = str.replaceAll("9", "⁹"); return str; } public static String subscript(String str) { str = str.replaceAll("0", "₀"); str = str.replaceAll("1", "₁"); str = str.replaceAll("2", "₂"); str = str.replaceAll("3", "₃"); str = str.replaceAll("4", "₄"); str = str.replaceAll("5", "₅"); str = str.replaceAll("6", "₆"); str = str.replaceAll("7", "₇"); str = str.replaceAll("8", "₈"); str = str.replaceAll("9", "₉"); return str; }
注意,对于³³3有一点含糊之处,因为它们是acii symobls 251,253和252,它们也是utf符号。 我更喜欢使用acsii,因为它们更可能是由字体支持,但在这里你应该想要你真正想要使用的东西。
不,字符串只是一系列UTF-16代码单元。 在数学代码页中有单独的超级脚本字符的 unicode代码点,但没有一个代码点将字符串的区域标记为bidi区域的超级脚本。
如果您尝试使用Graphics上下文使用超级脚本显示数学文本,则应搜索用Java编写的Latek或MathML库。
String不存储格式信息。 要使用上标,您必须摆弄显示组件的字体。 检查字体上的API 。
您可以在java中使用html标签(仅限用户界面):假设您要显示2 10 ,请在JLabel中编写此代码:
JLabel lab = JLabel("210");
这可以在java字符串中完成,其他一些情况也可以使用Unicode Character超级脚本…看看这个链接 。
下面是如何在Java中标记字符串“JavaTM”的示例。
在as1.addAttribute method
‘4’是第一个字符的beginIndex索引,’6’是上标字符的endIndex索引。
例:
public class TextAttributesSuperscript extends JPanel { public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); AttributedString as1 = new AttributedString("JavaTM"); as1.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, 4, 6); g2d.drawString(as1.getIterator(), 15, 60); } public static void main(String[] args) { JFrame frame = new JFrame("Java Superscript Example"); frame.add(new TextAttributesSuperscript()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(320, 190); frame.setLocationRelativeTo(null); frame.setVisible(true); }
}
该计划的输出: