将 NSNumber 格式化为上标或下标 unicode 字符
Format an NSNumber in to superscript or subscript unicode characters
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”,它们都在上面!
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”,它们都在上面!