Юникод предлагает верхний индекс.
\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 0123456789- 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);
}
Edit:
Если вы передадите мой метод 4x2
, он вернет ⁴x²
. Что вам нужно сделать - в событии обновления в вашем текстовом поле - обнаружить подстроки, которые необходимо преобразовать в верхний индекс, и заменить их. Быстрое правило, которое будет работать для вас, состоит в том, чтобы сказать: «если цифра появляется сразу после символа с кодом, равным или превышающим« A »(\ u0041), замените его на верхний индексный эквивалент».