2011-11-09 42 views
8

Java Stringは、文字列の上付き文字をサポートしていますか?もし私がそれを使用することができれば、私はウェブとAPIを検索しましたが、私の目的にどのように使えるのか分かりません。Java文字列の上付き文字

これはウェブページには印刷されますが、htmlここに任意の提案をお願いします。

+1

A JavaのStringは文字だけの集まり、つまりプレーンテキスト..です –

+0

...まあ。ブラウザに上付き文字が必要な場合は、CSSまたはHTMLを使用する必要があります。文字列は単なる文字列であり、組み込みの書式はありません。 –

+1

誰もがなぜグラフィックコンポーネントとフォントについて話しているのか分かりません。 OP、あなたの質問を明確にしてください:この文字列はどこにどのように表示されますか? –

答えて

16

添字などをサポートする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); 
    } 

Should look like this

+0

この点についてhttp://stackoverflow.com/questions/12208275/output-a-number-raised-to-a-power-as-a-string? – partho

5

いいえ、文字列は単なるUTF-16コードユニットのシーケンスです。数式コードページにはindividual super-script charactersのUnicodeコードポイントがありますが、双方向型のためにスーパースクリプトされた文字列の領域をマークするものはありません。

グラフィックスコンテキストを使用してスーパースクリプトで数学テキストを表示しようとする場合は、Javaで書かれたLatekまたはMathMLライブラリを検索する必要があります。

2

文字列には書式設定情報は格納されません。上付き文字を使用するには、表示されているコンポーネントのフォントを操作する必要があります。 API on Fontをチェックしてください。

0

これは、Java文字列とUnicode文字スーパースクリプトを使用して他のいくつかの例では行うことができますが...このlinkを見てください。

2

あなたはJavaでHTMLタグを使用することができます(ユーザーインターフェイスのみ):あなたは、 2を表示し、あなたのJLabelにこのコードを書きたいとしよう は:

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

は、念のために誰かが作っ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; 
} 

注意、彼らはACII symobls 251、253と252があり、彼らはまた、UTF-シンボルであるため、¹²³について少しあいまいさがあること。私はacsiiを使う方が好きです。なぜなら、おそらくフォントで褒められているからですが、ここではあなたが実際に使いたいものを選ぶべきです。

+0

UTF記号のようなものはなく、ユニコードのコードポイント251-253は 'üüý'です。また、下付き文字 '5'は実際には上付き文字です。 –

+0

1. UTF-8でサポートされているシンボルはutf-symbol です。2.ありがとうございました。 – AvrDragon

+1

UTF-8とUTF-16とUTF-32はシンボルセットではありません。それらは、バイト文字列からさまざまなサイズの整数文字列へのマッピングです。 UnicodeとASCIIは整数からシンボルへのマッピングなので、ASCIIシンボルとUnicodeシンボルがありますが、UTF- *シンボルはありません。 Unicode/ASCIIシンボルのエンコードご覧のとおり、[拡張ASCII](http://www.ascii-code.com/)の唯一の数字記号は、通常の数字と小数です。上付き文字も下付き文字もありません。 –

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

}

出力:

enter image description here