2010-07-17 40 views

回答

4

Unicode提供上标数字。

  • \u2070 =⁰
  • \u00B9
  • \u00B2
  • \u00B3
  • \u2074 =⁴
  • \u2075 =⁵
  • \u2076 =⁶
  • \u2077 =⁷
  • \u2078 =⁸
  • \u2079 =⁹

所以,简单地更换一个2,其是应该与U + 00B2被上标。

4x² - 2x + 4 

下面是一些示例代码:

private static const SUPER_DIGIT:Object = { 
    '0':0x2070, '1':0x00B9, '2':0x00B2, '3':0x00B3, '4':0x2074, 
    '5':0x2075, '6':0x2076, '7':0x2077, '8':0x2078, '9':0x2079, 
    '-':0x207B 
}; 

// Converts all- characters to their superscript forms. 
public static function toSuperscript(str:String):String { 
    var buffer:Array = new Array(str.length); 
    for (var i:int = 0; i < str.length; ++i) { 
     buffer[i] = SUPER_DIGIT[str.charAt(i)]; 
     if (buffer[i] == null) buffer[i] = str.charCodeAt(i); 
    } 
    return String.fromCharCode.apply(null, buffer); 
} 

编辑:
如果你通过我的方法4x2它会返回⁴x²。您需要做的是 - 在文本字段的更新事件中 - 检测需要转换为上标并替换它们的子字符串。一个适用于你的快速规则是说“如果一个数字紧跟在一个代码等于或大于'A'(\ u0041)的字符之后,用它的上标equivillant替换它。”

+0

我不知道如何链接你的代码与动态文本字段。你能否提一下这件事? – Penelope 2010-07-20 16:43:11

+0

@Pen:我在答案的末尾添加了一个解释。 – Gunslinger47 2010-07-20 22:15:16

相关问题