iOS - Objective-C 字符串操作类

项目开发中自己编写的一个字符串操作相关的类:

  • 16 进制数转字符串
  • 计算校验码
  • 转换内容为 10 进制的字符串的数据 为 长度为 2 的 16进制的字符串,其它长度字符串返回 nil
  • 转换时间时分为固定长度的字符串,6时16分 -> 06:16
  • 转换固定格式的时间字符串为分钟数,06:16 -> 6 * 60 + 16 = 376
StringRelatedManager.h
//
//  StringRelatedManager.h
//  FluvalSmartApp
//
//  Created by huang zhengguo on 16/10/20.
//  Copyright © 2016年 huang zhengguo. All rights reserved.
//

@interface StringRelatedManager : BaseBleObject

/* 16进制转字符串 */
+ (NSString *)hexToStringWithData:(NSData *)data;

/* 计算16进制校验码 */
+ (NSString *)calculateXORWithArray:(NSArray *)array;
+ (NSString *)calculateXORWithString:(NSString *)str;

//转换内容为10进制的数据字符串为长度为2的16进制的字符串,其它长度字符串返回nil
+ (NSString *)convertToHexStringWithString:(NSString *)str;

+ (NSString *)generateTimeStrWithHour:(NSInteger)hour minute:(NSInteger)minute;

+ (NSInteger)generateMinutesWithHourMinuteTimeStr:(NSString *)str;

+ (NSString *)generateTimeStrWithTimeStr:(NSString *)timeStr;

+ (NSString *)convertFormatDateToHexStr:(NSString *)dateStr;

// 把两个字节(16进制)的时间节点转换为坐标轴
+ (NSInteger)covertTimeToXIndexWithTimeStr:(NSString *)timeStr;

// 根据字符串计算百分比
+ (NSInteger)calculateColorValueWithColorStr:(NSString *)colorStr;

@end
StringRelatedManager.m
//
//  StringRelatedManager.m
//  FluvalSmartApp
//
//  Created by huang zhengguo on 16/10/20.
//  Copyright © 2016年 huang zhengguo. All rights reserved.
//

#import "StringRelatedManager.h"

@implementation StringRelatedManager

// 把data数据转换成十六进制字符串
+ (NSString *)hexToStringWithData:(NSData *)data{
    
    // 把data数据转换为字节数组
    Byte *bytes = (Byte *)[data bytes];
    NSString *hexStr = @"";
    for (int i=0; i<[data length]; i++) {
        
        NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i] & 0xff];  //16进制数据
        if ([newHexStr length] == 1){
            
            hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
        }else{
            
            hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
        }
    }
    
    return hexStr;
}

+ (NSString *)calculateXORWithArray:(NSArray *)array{
    
    NSInteger hexInt = 0;
    NSInteger xorInt = 0;
    for (NSString *hexStr in array) {
        
        /* 把16进制的字符串转换为整形值 */
        hexInt = strtoul([hexStr UTF8String], 0, 16);
        
        xorInt = (xorInt ^ hexInt);
        
    }
    
    NSString *hexStr = [NSString stringWithFormat:@"%0lx",(long)xorInt];

    return hexStr;
}

+ (NSString *)calculateXORWithString:(NSString *)str{

    if (str.length % 2 != 0){
        
        return nil;
    }
    
    NSInteger hexInt = 0;
    NSInteger xorInt = 0;
    for (int i=0; i<str.length / 2; i++) {
        
        NSString *subStr = [str substringWithRange:NSMakeRange(i * 2, 2)];
        
        hexInt = strtol([subStr UTF8String], 0, 16);
        
        xorInt = (xorInt ^ hexInt);
    }
    
    NSString *xor = [NSString stringWithFormat:@"%0lx",(long)xorInt];
    if (xor.length < 2){
        
        xor = [NSString stringWithFormat:@"0%@",xor];
    }
    
    return xor;
}

+ (NSString *)convertToHexStringWithString:(NSString *)str{
    
    NSInteger value = [str integerValue];
    NSString *hexStr = [NSString stringWithFormat:@"%0lx",(long)value];
    if (hexStr.length > 2){
        
        return nil;
    }
    
    if (hexStr.length == 1){
        
        return [NSString stringWithFormat:@"0%@",hexStr];
    }
    
    return hexStr;
}

+ (NSString *)generateTimeStrWithHour:(NSInteger)hour minute:(NSInteger)minute{
    
    NSString *hourStr = [NSString stringWithFormat:@"%02ld",hour];
    NSString *minuteStr = [NSString stringWithFormat:@"%02ld",minute];
    
    return [NSString stringWithFormat:@"%@:%@",hourStr,minuteStr];
}

+ (NSString *)generateTimeStrWithTimeStr:(NSString *)timeStr{
    //解析小时
    NSInteger hourInt = strtol([[timeStr substringToIndex:2] UTF8String], 0, 16);
    //解析分钟
    NSInteger minuteInt = strtol([[timeStr substringFromIndex:2] UTF8String], 0, 16);
    
    NSString *hourStr = [NSString stringWithFormat:@"%02ld",hourInt];
    NSString *minuteStr = [NSString stringWithFormat:@"%02ld",minuteInt];
    
    return [NSString stringWithFormat:@"%@:%@",hourStr,minuteStr];
}

#pragma mark 把日期字符串转换为16进制字符串:17:30
+ (NSString *)convertFormatDateToHexStr:(NSString *)dateStr{
    NSString *hourStr = [self convertToHexStringWithString:[dateStr substringToIndex:2]];
    NSString *minuteStr = [self convertToHexStringWithString:[dateStr substringFromIndex:3]];
    
    return [NSString stringWithFormat:@"%@%@",hourStr,minuteStr];
}

+ (NSInteger)generateMinutesWithHourMinuteTimeStr:(NSString *)str{
    
    NSInteger hourInt = [[str substringToIndex:2] integerValue];
    NSInteger minuteInt = [[str substringFromIndex:3] integerValue];
    
    return (hourInt * 60 + minuteInt);
}

#pragma mark --- 把十六进制的日期字符串转换为横坐标
+ (NSInteger)covertTimeToXIndexWithTimeStr:(NSString *)timeStr{
    NSInteger hourInt = 0;
    NSInteger minuteInt = 0;
    
    // 解析小时
    hourInt = strtol([[timeStr substringToIndex:2] UTF8String], 0, 16);
    // 解析分钟
    minuteInt = strtol([[timeStr substringFromIndex:2] UTF8String], 0, 16);
    
    //生成X轴坐标
    if ((minuteInt == 0) || (minuteInt > 0 && minuteInt < 15)){
        
        return hourInt * 2;
    }else if (minuteInt > 45 && minuteInt < 60){
        
        return hourInt * 2 + 2;
    }else{
        
        return hourInt * 2 + 1;
    }
}

+ (NSInteger)calculateColorValueWithColorStr:(NSString *)colorStr{
    // 根据model的值设置存在的值
    NSString *lowByte = @"";
    NSString *highByte = @"";
    
    lowByte = [colorStr substringToIndex:2];
    highByte = [colorStr substringFromIndex:2];
    return strtol([[NSString stringWithFormat:@"%@%@",highByte,lowByte] UTF8String], 0, 16);
}

@end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Objective-C中,有多种方法可以进行字符串的拼接。一种常用的方法是使用NSString类提供的方法。你可以使用initWithFormat方法来拼接字符串,例如: ``` NSString *string = [[NSString alloc] initWithFormat:@"%@%@%@", string1, string2, string3]; ``` 这个方法会将string1、string2和string3按照指定的格式进行拼接,并将结果赋值给string变量。另外,你也可以使用stringByAppendingString方法将两个字符串进行拼接,例如: ``` NSString *str = [a stringByAppendingString:b]; ``` 这个方法会将字符串a和字符串b进行拼接,并将结果赋值给str变量。还有一种方法是使用stringByAppendingFormat方法,它可以将格式化字符串和普通字符串进行拼接,例如: ``` NSString *str = [string stringByAppendingFormat:@"%@,%@", a, b]; ``` 这个方法会将字符串a和字符串b按照指定的格式进行拼接,并将结果赋值给str变量。通过这些方法,你可以方便地进行Objective-C字符串的拼接操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Objective-C字符串的拼接方法小结](https://download.csdn.net/download/weixin_38502814/12799885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Objective-c 字符串的拼接](https://blog.csdn.net/qq_28766327/article/details/51249651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [objective-C中的字符串拼接](https://blog.csdn.net/chuyouyinghe/article/details/45072461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值