关闭

几种字符串的转变

195人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10846次
    • 积分:429
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:37篇
    • 译文:15篇
    • 评论:0条