Java String是否支持字符串中的上标?如果是,那么我如何使用它,我已经搜索了网络和API,但无法弄清楚如何将它用于我的目的
虽然这会打印在网页上,但我不能在这里使用html标签,请提出任何建议
答案 0 :(得分:19)
查看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);
}
答案 1 :(得分:14)
以防万一有人使用theese手工制作的功能:
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,因为它们更可能是由字体支持的,但在这里你应该确定你真正想要使用的东西。
答案 2 :(得分:5)
不,字符串只是一系列UTF-16代码单元。数学代码页中有individual super-script characters的unicode代码点,但没有一个代码点将字符串区域标记为bidi区域的超级脚本。
如果您尝试使用Graphics上下文使用超级脚本显示数学文本,则应搜索用Java编写的Latek或MathML库。
答案 3 :(得分:2)
String不存储格式信息。要使用上标,您必须摆弄显示组件的字体。查看API on Font。
答案 4 :(得分:2)
您可以在java中使用html标签(仅限用户界面): 假设您要显示2 10 ,请在JLabel中编写此代码:
JLabel lab = JLabel("2<html><sup>10</sup></html>");
答案 5 :(得分:1)
这可以在java字符串中完成,其他一些情况也可以使用Unicode Character超级脚本...看看link。
答案 6 :(得分:1)
以下是如何在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);
}
}
此计划的输出: