2011-11-09 243 views
8

¿Java String admite superíndices en una cadena? Si es así, ¿cómo puedo usarlo? He buscado en la web y también en la API pero no he podido averiguar cómo puedo usarlo para mi propósitosuperíndice en Java String

Aunque esto se imprimirá en la página web, no puedo usar el html marque aquí, cualquier sugerencia, por favor

+1

Un String de Java es sólo una colección de caracteres, es decir, texto plano .. . –

+0

... Bien. Si quieres superíndices en un navegador, vas a tener que usar CSS o HTML. Una cadena es solo eso: una cadena, no tiene ningún formato intrínseco. –

+1

No sé por qué todos hablan sobre los componentes gráficos y las fuentes. OP, aclare su pregunta: ¿dónde y cómo se mostrará esta cadena? –

Respuesta

16

Consulte java.text.AttributedString, que admite subíndices y más. por ejemplo, en su paintComponent() se puede ir:

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

Should look like this

+0

¿qué tal esto http://stackoverflow.com/questions/12208275/output-a-number-raised-to-a-power-as-a-string? – partho

5

No, una cadena es solo una secuencia de unidades de código UTF-16. Hay puntos de código Unicode para individual super-script characters en las páginas de códigos de matemáticas, pero ninguno que marque una región de una cadena como superguiada de la forma en que existen las regiones bidi.

Si está intentando mostrar texto matemático con superguiones utilizando un contexto de gráficos, debe buscar bibliotecas Latek o MathML escritas en Java.

2

Una cadena no almacena información sobre el formato. Para utilizar el superíndice, tendrá que manipular la fuente del componente de visualización. Consulte el API on Font.

0

Esto se puede hacer en las cadenas de Java y algunos otros casos también se utilizan caracteres Unicode súper guión ... link vistazo a esto.

2

Puede usar etiquetas HTML en Java (Interfaz de usuario única): Supongamos que desea mostrar 2 , escriba este código en tu JLabel:

JLabel lab = JLabel("2<html><sup>10</sup></html>"); 
13

Sólo en caso de que alguien utiliza theese hecho a mano funciones:

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

Nota, de que hay un poco de ambigüedad sobre ¹²³, porque son symobls ACII 251, 253 y 252 y también son UTF-símbolos. Prefiero usar acsii porque es más probable que estén supragados por tipo de letra, pero aquí debes indicar lo que realmente quieres usar.

+0

No existe el símbolo UTF, y los puntos de código 251-253 en Unicode son 'ûüý'. Además, su subíndice '5' es en realidad un superíndice. –

+0

1. símbolo compatible con UTF-8 es un símbolo utf 2. gracias, – AvrDragon

+1

corregido UTF-8 y UTF-16 y UTF-32 no son conjuntos de símbolos. Son asignaciones de cadenas de bytes a cadenas de enteros de distintos tamaños. Unicode y ASCII son asignaciones de enteros a símbolos, por lo que hay símbolos ASCII y símbolos Unicode, pero no símbolos UTF- *, solo UTF- ?? codificaciones de símbolos Unicode/ASCII. Como puede ver, los únicos símbolos numéricos en [ASCII ampliado] (http://www.ascii-code.com/) son dígitos y fracciones regulares. Sin superíndices o subíndices. –

1

Este es el ejemplo de cómo superíndice la cadena "JavaTM" en Java.

en as1.addAttribute method '4' es el beginIndex Índice del primer carácter y '6' es el índice endIndex del carácter de superíndice.

Ejemplo:

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

}

salida de este programa:

enter image description here