2011-11-09 38 views
8

Java String supporta apice in una stringa? Se sì, come posso usarlo, ho cercato il web e anche l'API ma non sono riuscito a capire come posso usarlo per il mio scopoapice in stringa Java

Anche se questo verrà stampato sulla pagina web, non posso usare l'html tag qui, eventuali suggerimenti per favore

+1

String Java è solo un insieme di caratteri, ovvero testo semplice .. –

+0

... Bene. Se vuoi i superscript in un browser, dovrai usare CSS o HTML. Una stringa è proprio questa: una stringa, non ha alcuna formattazione intrinseca. –

+1

Non so perché tutti parlano di componenti grafici e tipi di carattere. OP, per favore chiarisci la tua domanda: dove e come verrà visualizzata questa stringa? –

risposta

16

Controlla java.text.AttributedString, che supporta gli indici e altro. per esempio, nel vostro paintComponent() si può andare:

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

che dire di questo http://stackoverflow.com/questions/12208275/output-a-number-raised-to-a-power-as-a-string? – partho

5

No, una stringa è solo una sequenza di unità di codice UTF-16. Esistono codepoint unicode per individual super-script characters nelle pagine di codice matematiche ma nessuno che contrassegna una regione di una stringa come super-scriptata come esistono per le regioni bidi.

Se si sta tentando di visualizzare testo matematico con super-script utilizzando un contesto grafico, è necessario cercare le librerie Latek o MathML scritte in Java.

2

A String non memorizza le informazioni di formattazione. Per usare un apice, devi armeggiare con il Font del componente di visualizzazione. Acquista il API on Font.

0

Questo può essere fatto nelle stringhe java e alcuni altri casi anche utilizzando caratteri Unicode sceneggiatura eccellente ... un'occhiata a questo link.

2

È possibile utilizzare i tag html in Java (User Interface solo): Supponiamo che si desidera visualizzare 2 , scrivere questo codice nel tuo JLabel:

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

Nel caso in cui qualcuno utilizza theese fatto a mano funzioni:

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, che c'è un piccolo ambiguità circa ¹²³, perché sono symobls ACII 251, 253 e 252 e sono anche utf-simboli. Preferisco usare acsii perché più probabilmente sono supproste dal font, ma qui dovresti desideare ciò che vuoi effettivamente usare.

+0

Non esiste un simbolo UTF e i codepoint 251-253 in unicode sono "ûüý". Inoltre, il tuo indice "5" è in realtà un apice. –

+0

1. il simbolo supportato in UTF-8 è un simbolo utf 2. thanks, corretto – AvrDragon

+1

UTF-8 e UTF-16 e UTF-32 non sono set di simboli. Sono mappature da stringhe di byte a stringhe di numeri interi di varie dimensioni. Unicode e ASCII sono mappature da numeri interi a simboli quindi ci sono simboli ASCII e simboli Unicode, ma non simboli UTF-, solo UTF- ?? codifiche di simboli Unicode/ASCII. Come puoi vedere, gli unici simboli numerici in [ASCII esteso] (http://www.ascii-code.com/) sono cifre e frazioni regolari. Nessun apice o pedice. –

1

Ecco l'esempio di come sovrascrivere la stringa "JavaTM" in Java.

in as1.addAttribute method '4' è il beginIndex indice del primo carattere e '6' è l'indice endIndex del personaggio per apice.

Esempio:

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

}

uscita di questo programma:

enter image description here