6

I am looking for the Unicode or some method or byte language that can put out superscripts for 1, 2, 3. For whatever reason Unicode has superscripts for 0, 4, 5, 6, 7, 8, 9, but not 1, 2, 3.

Can you do superscripts like HTML in NSString?

smci
  • 32,567
  • 20
  • 113
  • 146
Kristen Martinson
  • 1,829
  • 3
  • 22
  • 33

3 Answers3

5

From the character palette:

¹
SUPERSCRIPT ONE
Unicode: U+00B9, UTF-8: C2 B9

²
SUPERSCRIPT TWO
Unicode: U+00B2, UTF-8: C2 B2

³
SUPERSCRIPT THREE
Unicode: U+00B3, UTF-8: C2 B3

This, to make them in to NSStrings, you'd do:

NSString *superscript1 = @"\u00B9";
NSString *superscript2 = @"\u00B2";
NSString *superscript3 = @"\u00B3";
Dave DeLong
  • 242,470
  • 58
  • 448
  • 498
5

I know this question has already been answered but if anyone wants to reuse my code for converting from a standard string of numbers to superscript, here it is.

-(NSString *)superScriptOf:(NSString *)inputNumber{

    NSString *outp=@"";
    for (int i =0; i<[inputNumber length]; i++) {
    unichar chara=[inputNumber characterAtIndex:i] ;
    switch (chara) {
        case '1':
            NSLog(@"1");
            outp=[outp stringByAppendingFormat:@"\u00B9"];
            break;
        case '2':
            NSLog(@"2");
            outp=[outp stringByAppendingFormat:@"\u00B2"];
            break;
        case '3':
            NSLog(@"3");
            outp=[outp stringByAppendingFormat:@"\u00B3"];
            break;
        case '4':
            NSLog(@"4");
            outp=[outp stringByAppendingFormat:@"\u2074"];
            break;
        case '5':
            NSLog(@"5");
                            outp=[outp stringByAppendingFormat:@"\u2075"];
            break;
        case '6':
            NSLog(@"6");
                            outp=[outp stringByAppendingFormat:@"\u2076"];
            break;
        case '7':
            NSLog(@"7");
            outp=[outp stringByAppendingFormat:@"\u2077"];
            break;
        case '8':
            NSLog(@"8");
            outp=[outp stringByAppendingFormat:@"\u2078"];
            break;
        case '9':
            NSLog(@"9");
            outp=[outp stringByAppendingFormat:@"\u2079"];
            break;
        case '0':
            NSLog(@"0");
            outp=[outp stringByAppendingFormat:@"\u2070"];
            break;
        default:
            break;
    }
}
return outp;   
}

Given an input string of numbers it just returns the equivalent superscript string.

Edit (thanks to jrturton):

-(NSString *)superScriptOf:(NSString *)inputNumber{

    NSString *outp=@"";
    unichar superScripts[] = {0x2070, 0x00B9, 0x00B2,0x00B3,0x2074,0x2075,0x2076,0x2077,0x2078,0x2079};

    for (int i =0; i<[inputNumber length]; i++) {

        NSInteger x =[[inputNumber substringWithRange:NSMakeRange(i, 1)]  integerValue];
        outp=[outp stringByAppendingFormat:@"%C", superScripts[x]];

    }

    return outp;   
}
Tawfiqh
  • 143
  • 1
  • 10
  • 2
    Would be much simpler to have an array of all the characters then just take the objectAtIndex from the array. – jrturton Oct 29 '11 at 08:35