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