几种字符串的转变

1.//将传入的字符串逆序
//比如输入 @”abcdef”输出@”fedcba”
2.//压缩字符串
//比如输入@”aaabbbcceaa” 输出@”3a3b2c1e2a”
3.//对字符串按字母顺序进行排序
//比如输入@”aczabczab” 输出@”aaabbcczz”
4.//将原字符串进行小写转大写,大写转小写
//比如输入 @”aBCdEfGA” 输出 @”AbcDeFga”
5.// 替换字符串srcStr中从startKey到endKey之间的字符串//返回结果
//比如输入srcStr=@”abcdaabbccdef” startKey=@”da” endKey=@”cde” 输出 @”abbc”

//1.
+(NSString*)reveserString:(NSString*)srcStr
{
    NSMutableString* mStr=[[NSMutableString alloc]init];
    for(NSInteger i=srcStr.length-1;i>=0;i--){
        unichar c=[srcStr characterAtIndex:i];
        [mStr appendFormat:@"%C",c];
    }
    return mStr;
}
//2.
+(NSString*)compString:(NSString*)srcStr
{
    NSMutableString *mStr=[[NSMutableString alloc]init];
    for(NSInteger i=0;i<srcStr.length;){
//        取出每个字符
        unichar c=[srcStr characterAtIndex:i];
        int len=1;
//        查找字符后面相同的字符,统计个数
        for(NSInteger j=i+1;j<srcStr.length;j++){
            unichar c1=[srcStr characterAtIndex:j];
            if(c==c1){
                len++;
            }else{
                break;
            }
        }
        [mStr appendFormat:@"%d%C",len,c];
//        从下一个字符再开始判断统计个数
        i=i+len;
    }
    return mStr;
}
//3.
+(NSString*)sortString:(NSString*)srcStr
{
    NSMutableArray * array=[[NSMutableArray alloc]init];
//    将字符串拆成数组(取出每一个字符,包装成字符串,字符串只含有一个字符,加入数组)
    for(NSInteger i=0;i<srcStr.length;i++){
        unichar c=[srcStr characterAtIndex:i];
        NSString * str=[NSString stringWithFormat:@"%C",c];
        [array addObject:str];
    }
//    对数组(元素是含有一个字符的字符串)进行排序
    [array sortUsingSelector:@selector(compare:)];
//    将排序之后的数组拼接成字符串
    NSString *s=[array componentsJoinedByString:@""];
    return s;
}
//4.
+(NSString *)reveserChacter:(NSString*)srcStr
{
    NSMutableString *mStr=[[NSMutableString alloc]init];
//    依次取出每个字符,判断是否大小写,再转换
    for(NSInteger i=0;i<srcStr.length;i++){
        unichar c=[srcStr characterAtIndex:i];
        if(c>='a'&&c<='z'){
            c-=32;
        }else if (c>='A'&&c<='Z'){
            c+=32;
        }
        [mStr appendFormat:@"%C",c];
    }
    return mStr;
}
//5.
+(NSString *)replaceString:(NSString *)srcStr betweenStartKey:(NSString* )startKey  andEndKey:(NSString*)endKey
{
//    分别查找两个子字符串的位置,先取从0到endKey之间的子字符串,再取从startKey之后到最后的字符串
    NSRange range1=[srcStr rangeOfString:startKey];
    NSRange range2=[srcStr rangeOfString:endKey];
    NSString* nStr=[[srcStr substringToIndex:range2.location] substringFromIndex:range1.location+range1.length];
//    实现的连续操作,第二个方法是在第一个方法的结果上进行的,第二个方法操作时,字符串的起始位置已经发生了变化,这样的结果不正确
    //nStr=[[srcStr substringFromIndex:range1.location+range1.length]substringToIndex:range2.location];
    return nStr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值