【发布时间】:2010-08-19 19:22:23
【问题描述】:
例如,假设我有一个 NSString @"20O(2H,1H)19O",并且我希望所有数字都是上标。有没有简单的方法可以做到这一点?
【问题讨论】:
例如,假设我有一个 NSString @"20O(2H,1H)19O",并且我希望所有数字都是上标。有没有简单的方法可以做到这一点?
【问题讨论】:
我想你可能想要NSAttributedString 和NSSuperScriptAttributeName。如果您需要将其保存在NSString 中,unicode 包含superscripted digits 的字符。
【讨论】:
NSSuperscriptAttributeName 需要一个整数。这仅允许在您希望上标(或下标)为位置的位置进行相当粗略的调整。
这个函数应该返回一个给定的上标数字。很简单
-(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;
}
给定一个输入的数字字符串,它只返回等效的上标字符串。
【讨论】: