2011-11-09 3 views
8

자바 문자열은 문자열에서 위 첨자를 지원합니까? 그렇다면 어떻게 사용할 수 있습니까? 웹과 API를 검색했지만 API를 사용했지만 어떻게 사용할 수 있는지 알 수 없었습니다.자바 문자열의 위 첨자

웹 페이지에 인쇄되지만 html 여기에 태그, 제안 사항을 알려주십시오.

+1

자바 문자열 그냥 즉, 일반 텍스트 문자의 모음입니다 .. –

+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에 대한 유니 코드 코드 포인트가 있지만 문자열 영역을 bidi 영역의 수퍼 스크립트로 표시하는 코드 코드 포인트는 없습니다.

그래픽 컨텍스트를 사용하여 수퍼 스크립트로 수학 텍스트를 표시하려는 경우 Java로 작성된 Latek 또는 MathML 라이브러리를 검색해야합니다.

2

문자열에 서식 지정 정보가 저장되지 않습니다. 위 첨자를 사용하려면 표시되는 구성 요소의 글꼴을 연습해야합니다. API on Font을 확인하십시오.

0

이것은 자바 문자열과도 유니 코드 문자 슈퍼 스크립트를 사용하여 다른 경우에 할 수있는가 ...이 link 봐.

2

당신은 자바에서 HTML 태그를 사용할 수 있습니다 (사용자 인터페이스 만) : 당신이 10 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 입니다. 감사합니다. – AvrDragon

+1

UTF-8 및 UTF-16 및 UTF-32는 심볼 세트가 아닙니다. 그것들은 바이트 문자열에서 다양한 크기의 정수 문자열로의 매핑입니다. 유니 코드와 ASCII는 정수에서 기호로의 매핑이므로 ASCII 기호와 유니 코드 기호가 있지만 UTF- * 기호는없고 UTF- ?? 유니 코드/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

관련 문제