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); } 

}

该计划的输出:

在此处输入图像描述