я хочу отобразить квадратное уравнение в формате (4x2) - PullRequest
2 голосов
/ 17 июля 2010

Я хочу отобразить квадратное уравнение в формате (4x2).я хочу автоматически отображать 2 как верхний индекс после ввода x в текстовом поле.

1 Ответ

4 голосов
/ 18 июля 2010

Юникод предлагает верхний индекс.

  • \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), замените его на верхний индексный эквивалент».

...