2011-11-09 15 views
8

क्या जावा स्ट्रिंग स्ट्रिंग में सुपरस्क्रिप्ट का समर्थन करता है? यदि हां, तो मैं इसका उपयोग कैसे कर सकता हूं, मैंने वेब और एपीआई की खोज की है लेकिन यह पता लगाने में सक्षम नहीं है कि मैं अपने उद्देश्य के लिए इसका उपयोग कैसे कर सकता हूंजावा स्ट्रिंग में सुपरस्क्रिप्ट

हालांकि यह वेबपृष्ठ पर मुद्रित होगा, मैं HTML का उपयोग नहीं कर सकता यहां टैग करें, कोई सुझाव कृपया

+1

एक जावा स्ट्रिंग सिर्फ यानी सादा पाठ वर्ण का संग्रह है, है .. –

+0

... ठीक है। यदि आप ब्राउज़र में सुपरस्क्रिप्ट चाहते हैं, तो आपको सीएसएस या एचटीएमएल का उपयोग करना होगा। एक स्ट्रिंग बस एक स्ट्रिंग है, इसमें कोई अंतर्निहित स्वरूपण नहीं है। –

+1

मुझे नहीं पता कि हर कोई ग्राफिक्स घटकों और फ़ॉन्ट्स के बारे में क्यों बात कर रहा है। ओपी, कृपया अपने प्रश्न को स्पष्ट करें: यह स्ट्रिंग कहां और कैसे प्रदर्शित की जाएगी? –

उत्तर

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

नहीं, एक स्ट्रिंग केवल यूटीएफ -16 कोड-इकाइयों का एक अनुक्रम है। गणित कोड-पृष्ठों में individual super-script characters के लिए यूनिकोड कोडपॉइंट्स हैं, लेकिन कोई भी जो स्ट्रिंग के किसी क्षेत्र को चिह्नित नहीं करता है, जैसे कि बिडी क्षेत्रों के लिए सुपर-स्क्रिप्ट किया गया है।

यदि आप ग्राफिक्स संदर्भ का उपयोग कर सुपर-स्क्रिप्ट के साथ गणितीय पाठ प्रदर्शित करने का प्रयास कर रहे हैं, तो आपको जावा में लिखे गए लैटेक या मैथएमएल पुस्तकालयों की खोज करनी चाहिए।

2

ए स्ट्रिंग फ़ॉर्मेटिंग जानकारी संग्रहीत नहीं करता है। सुपरस्क्रिप्ट का उपयोग करने के लिए, आपको प्रदर्शित घटक के फ़ॉन्ट के साथ बेवकूफ होना होगा। API on Font चेकआउट करें।

0

यह जावा तार और कुछ अन्य मामलों में भी यूनिकोड वर्ण सुपर स्क्रिप्ट का उपयोग किया जा सकता है ... इस link को देखो।

2

आप जावा में html टैग का प्रयोग कर सकते हैं (उपयोगकर्ता इंटरफ़ेस केवल): मान लीजिए आप, 2 प्रदर्शित अपने JLabel में इस कोड लिखना चाहते हैं:

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

शायद ज़रुरत पड़े किसी इन हाथ बनाया का उपयोग करता है कार्य:

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 का उपयोग करना पसंद करता हूं क्योंकि उन्हें शायद फ़ॉन्ट द्वारा supproted हैं, लेकिन यहां आपको यह देखना चाहिए कि आप वास्तव में क्या उपयोग करना चाहते हैं।

+0

यूटीएफ प्रतीक जैसी कोई चीज़ नहीं है, और यूनिकोड में कोडपॉइंट्स 251-253 'ûüý' हैं। साथ ही, आपकी सबस्क्रिप्ट '5' वास्तव में एक सुपरस्क्रिप्ट है। –

+0

1. यूटीएफ -8 में समर्थित प्रतीक एक यूटीएफ-प्रतीक 2. धन्यवाद, सही – AvrDragon

+1

यूटीएफ -8 और यूटीएफ -16 और यूटीएफ -32 प्रतीक सेट नहीं हैं। वे अलग-अलग आकारों के पूर्णांक के तारों तक बाइट तारों से मैपिंग कर रहे हैं। यूनिकोड और एएससीआईआई पूर्णांक से प्रतीकों तक मैपिंग हैं इसलिए एएससीआईआई प्रतीक और यूनिकोड प्रतीक हैं, लेकिन यूटीएफ- * प्रतीक नहीं, केवल यूटीएफ- ?? यूनिकोड/ASCII प्रतीकों के एन्कोडिंग। जैसा कि आप देख सकते हैं, [विस्तारित ASCII] (http://www.ascii-code.com/) में केवल संख्यात्मक प्रतीकों नियमित अंक और भिन्न होते हैं। कोई सुपरस्क्रिप्ट या सबस्क्रिप्ट नहीं। –

1

जावा में स्ट्रिंग "जावाटीएम" को सुपरस्क्रिप्ट करने का उदाहरण यहां दिया गया है।

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

संबंधित मुद्दे