将NSNumber格式化为上标或下标unicode字符

将NSNumber格式化为上标或下标unicode字符,unicode,nsstring,string-formatting,nsnumber,Unicode,Nsstring,String Formatting,Nsnumber,Unicode包含上标字符,例如“⁰¹²³⁴⁵⁶⁷⁸⁹" 还有下标:“₀₁₂₃₄₅₆₇₈₉“。我想将一个数字格式化为超级数字或下标数字–我相信在UILabel或UITextField中使用应该很好。” 具体来说,我不想使用NSAttributedString 谢谢。我在NSString上添加了一个类别,但是在使用之前请阅读下面的巨大警告 -(NSString*) asSuperscript { return [self tranformWithMap: @{

Unicode包含上标字符,例如“⁰¹²³⁴⁵⁶⁷⁸⁹" 还有下标:“₀₁₂₃₄₅₆₇₈₉“。我想将一个数字格式化为超级数字或下标数字–我相信在
UILabel
UITextField
中使用应该很好。”

具体来说,我不想使用
NSAttributedString


谢谢。

我在NSString上添加了一个类别,但是在使用之前请阅读下面的巨大警告

-(NSString*) asSuperscript
{
    return [self tranformWithMap:
            @{
              @"0": @"⁰",
              @"1": @"¹",
              @"2": @"²",
              @"3": @"³",
              @"4": @"⁴",
              @"5": @"⁵",
              @"6": @"⁶",
              @"7": @"⁷",
              @"8": @"⁸",
              @"9": @"⁹"
              }];
}

-(NSString*) tranformWithMap: (NSDictionary *) map
{
    NSString *output = self;

    for (NSString *from in map.allKeys)
    {
        output = [output stringByReplacingOccurrencesOfString: from withString: map[from]];
    }

    return output;
}
上面的实现效率惊人地低,但是对于短字符串就可以了——嘿,计算机很快,对吗

然而,在iOS上,我需要它,系统字体的上标字符看起来很糟糕。特别是“123”的字符没有垂直排列与“0456789”,它们都是较高的