【问题标题】:NSString: Looking for Unicode for superscript: 1, 2, 3NSString:为上标寻找 Unicode:1、2、3
【发布时间】:2011-10-13 19:15:32
【问题描述】:

我正在寻找可以为 1、2、3 输出上标的 Unicode 或某种方法或字节语言。无论出于何种原因,Unicode 都有 0、4、5、6、7、8、9 的上标,但没有1、2、3。

你能在NSString中做HTML之类的上标吗?

【问题讨论】:

    标签: objective-c cocoa-touch unicode superscript


    【解决方案1】:

    从字符调色板:

    ¹
    SUPERSCRIPT ONE
    Unicode: U+00B9, UTF-8: C2 B9
    
    ²
    SUPERSCRIPT TWO
    Unicode: U+00B2, UTF-8: C2 B2
    
    ³
    SUPERSCRIPT THREE
    Unicode: U+00B3, UTF-8: C2 B3
    

    为了让他们加入NSStrings,你应该这样做:

    NSString *superscript1 = @"\u00B9";
    NSString *superscript2 = @"\u00B2";
    NSString *superscript3 = @"\u00B3";
    

    【讨论】:

      【解决方案2】:

      我知道这个问题已经得到解答,但是如果有人想重用我的代码来将标准数字字符串转换为上标,这里就是。

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

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

      编辑(感谢 jrturton):

      -(NSString *)superScriptOf:(NSString *)inputNumber{
      
          NSString *outp=@"";
          unichar superScripts[] = {0x2070, 0x00B9, 0x00B2,0x00B3,0x2074,0x2075,0x2076,0x2077,0x2078,0x2079};
      
          for (int i =0; i<[inputNumber length]; i++) {
      
              NSInteger x =[[inputNumber substringWithRange:NSMakeRange(i, 1)]  integerValue];
              outp=[outp stringByAppendingFormat:@"%C", superScripts[x]];
      
          }
      
          return outp;   
      }
      

      【讨论】:

      • 拥有一个包含所有字符的数组会简单得多,然后只需从数组中获取 objectAtIndex。
      【解决方案3】:
      猜你喜欢
      • 2023-03-30
      • 2012-10-23
      • 2022-11-13
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多