是否有一种简单的方法可以使NSString对象的一部分成为上标或下标?

时间:2010-08-19 19:22:24

标签: cocoa macos nsstring

例如,假设我有一个NSString @“20O(2H,1H)19O”,我希望所有的数字都是上标。有一个简单的方法吗?

2 个答案:

答案 0 :(得分:5)

我认为您可能希望NSAttributedStringNSSuperScriptAttributeName。如果您需要将其保留在NSString中,unicode包含superscripted digits字符。

答案 1 :(得分:3)

此函数应返回上标中的给定数字。非常简单

-(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;   
}

给定一个输入的数字字符串,它只返回等效的上标字符串。