Java 字符串中的上标

新手上路,请多包涵

Java String 是否支持 String 中的上标?如果是,那么我该如何使用它,我已经搜索了网络和 API,但无法弄清楚如何将它用于我的目的

虽然这将打印在网页上,但我不能在这里使用 html 标签,请提出任何建议

原文由 Hell Boy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 740
2 个回答

查看支持下标等的 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);
   }

应该看起来像这样

原文由 user949300 发布,翻译遵循 CC BY-SA 3.0 许可协议

以防万一有人使用这些手工制作的功能:

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

请注意,关于 12³ 有一点歧义,因为它们是 acsii 符号 251、253 和 252,它们也是 utf 符号。我更喜欢使用 acsii,因为它们更可能受字体支持,但在这里您应该决定您实际想要使用的是什么。

原文由 AvrDragon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题