2011-12-22 2 views
3

Есть ли какой-либо способ надстроить любой номер? В моем приложении мне нужно переопределить числа от 0 до 24.
Я знаю, что с \u2070, например, я могу отображать надстрочный номер 0, но в Юникоде есть не все числа, которые мне нужны.
Я просто хочу установить NSString на число с показателем, например 10^24. Есть какой-либо способ сделать это?Надпись над любой буквой/номером

ответ

7

Они разбросаны по блокам Unicode:

  • \u2070 является верхним индексом 0
  • \u00B9 является верхним индексом 1
  • \u00B2 является верхним индексом 2
  • \u00B3 представляет верхний индекс 3
  • \u2074 является верхним индексом 4
  • \u2075 является верхним индексом 5
  • \u2076 является индекс 6
  • \u2077 является индексом 7
  • \u2078 является верхним индексом 8
  • \u2079 является индексом 9

Чтобы поместить их в целом и сделать его легче выбрать цифру, вы можете либо использовать wchar_t[] типа, или хранить их в строке:

NSString *superDigits = @"\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079"; 

В качестве упражнения вы можете создать метод, который форматирует целое число в виде верхнего индекса строки.

+3

Обратите внимание, что в большинстве шрифтов в прошивке, цифры 1,2 и 3 отличаться от остальные. См. Этот вопрос для получения дополнительной информации (и список совместимых шрифтов): http: //stackoverflow.com/questions/7663251/why-the-display-of-unicode-characters-for-superscripted-digits-are-not -at-the-sa/7663610 # 7663610 – jrturton

+0

+1 @jrturton: Да, я заметил это и в нескольких шрифтах. Я полагаю, что альтернатива заключалась в том, чтобы TUC определяла '\ u2070 ~ \ u2079' в качестве надстрочных цифр, которые имеют' \ u00B2', '\ u00B3' и' \ u00B9' как дубликаты ... но несколько кодовых точек для одного и того же глифа, вероятно, более уродливые, чем логически последовательные символы с непоследовательными кодовыми точками. – dreamlax

+0

@dreamlax: Могу ли я иметь юникоды для алфавитов? –

3

Ну, там все номера, в которых вы нуждаетесь. Look here

Пример:

ruby-1.9.3 > "1\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079" 
=> "1⁰¹²³⁴⁵⁶⁷⁸⁹"