• Apple开发_字符串与Unicode编码的互转


    // 字符串 转Unicode
    - (NSString *)utf8ToUnicode:(NSString *)string {
        NSUInteger length = [string length];
        NSMutableString *str = [NSMutableString stringWithCapacity:0];
        for (int i = 0; i < length; i++) {
            NSMutableString *s = [NSMutableString stringWithCapacity:0];
            unichar _char = [string characterAtIndex:i];
            // 判断是否为英文和数字
            if (_char <= '9' && _char >='0') {
                [s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
            }
            else if(_char >='a' && _char <= 'z') {
                [s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
            }
            else if(_char >='A' && _char <= 'Z') {
                [s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
            }
            else {
                // 中文和字符
                [s appendFormat:@"\\u%x", [string characterAtIndex:i]];
                // 不足位数补0 否则解码不成功
                if(s.length == 4) {
                    [s insertString:@"00" atIndex:2];
                }
                else if (s.length == 5) {
                    [s insertString:@"0" atIndex:2];
                }
            }
            [str appendFormat:@"%@", s];
        }
        return str;
    
    }
    
    // Unicode 转字符串
    - (NSString *)replaceUnicode:(NSString *)unicodeStr {
    
        NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
        NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\""];
        NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
        NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
        NSString *returnStr = [NSPropertyListSerialization propertyListFromData:tempData
                                                               mutabilityOption:NSPropertyListImmutable
                                                                         format:NULL
                                                               errorDescription:NULL];
        return [returnStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n"];
    }
    
    
    
    NSString *unicode = [self utf8ToUnicode:@""];
        GCLog(@"9999 == %@", unicode);
        unicode = [self replaceUnicode:@"\\u0023"];
        GCLog(@"9999 == %@", unicode);
    
        NSMutableString *all_str = [[NSMutableString alloc] init];
        for (NSInteger index = 0x0250; index < 0x02AF; index++) {
            NSString *hex_str = [self decimalToHex:index];
    
            hex_str = [NSString stringWithFormat:@"\\u%@", hex_str];
            unicode = [self replaceUnicode:hex_str];
            
            if (unicode && unicode.length) {
                GCLog(@"9999 == %@", unicode);
                
                [all_str appendString:unicode];
                [all_str appendString:@" "];
            }
        }
    
  • 相关阅读:
    poj 2955 区间dp
    LightOJ
    hdu 2089 数位dp
    LightOJ
    等比数列
    江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园
    江西财经大学第一届程序设计竞赛 F题 解方程
    江西财经大学第一届程序设计竞赛 H题 求大数的阶乘
    Google 的Web开发相关工具
    Android Vitals各性能指标介绍
  • 原文地址:https://www.cnblogs.com/CH520/p/16254704.html
Copyright © 2020-2023  润新知