20150611_OC字符串NSString,NSMutableString练习

本文介绍了一组Objective-C实用字符串处理方法,包括字符串反转、压缩、排序、大小写转换等功能,并提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的目的主要是练习使用OC中的两个字符串:

StringOperation.h文件:

//
//  StringOperation.h
//  IOS150610_OC_字符串练习
//
//  Created by qianfeng on 15/6/10.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface StringOperation : NSObject

+(NSString*)reveserString:(NSString*)srcStr;
+ (NSString *)compressString:(NSString *)srcStr;
+ (NSString *)sortString:(NSString *)srcStr;
+ (NSString *)reverCharacter:(NSString *)srcStr;
+ (NSString *)replaceString:(NSString *)srcStr
            betweenStartKey:(NSString* )startKey
                  andEndKey:(NSString*)endKey;
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr;
@end

StringOperation.m文件:

//
//  StringOperation.m
//  IOS150610_OC_字符串练习
//
//  Created by qianfeng on 15/6/10.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import "StringOperation.h"

@implementation StringOperation
//将传入的字符串逆序
//比如输入 @"abcdef"输出@"fedcba"
+(NSString*)reveserString:(NSString*)srcStr
{
    NSInteger len = [srcStr length];
    unichar ch;
    NSString *dest = @"";
    for (NSInteger i=len-1; i>=0; i--) {
        ch = [srcStr characterAtIndex:i];
        dest = [dest stringByAppendingFormat:@"%C",ch];
    }
    return dest;
}

//压缩字符串
//比如输入@"aaabbbcceaa" 输出@"3a3b2c1e2a"
+ (NSString *)compressString:(NSString *)srcStr
{
    NSInteger len = [srcStr length];
    unichar ch;
    NSString *dest = @"";
    NSInteger count = 1;
    NSInteger j;
    
    for (NSInteger i=0; i<len;) {
        ch = [srcStr characterAtIndex:i];
        count = 1;
        for (j=i+1; j<len; j++) {
            if (ch == [srcStr characterAtIndex:j]) {
                count++;
            }
            else
            {
                break;
            }
        }
        i=j;
        dest = [dest stringByAppendingFormat:@"%ld%C",count,ch];
    }
    return dest;
}

//对字符串按字母顺序进行排序
//比如输入@"aczabczab"  输出@"aaabbcczz"
+ (NSString *)sortString:(NSString *)srcStr
{
    NSInteger len = [srcStr length];
    NSString *temCh;
    NSString *temCh1;
    for (NSInteger i=0; i<len-1; i++) {
        for (NSInteger j = 0; j<len-i-1; j++) {
            if ([srcStr characterAtIndex:j] > [srcStr characterAtIndex:j+1]) {
                temCh =[NSString stringWithFormat:@"%C",[srcStr characterAtIndex:j]];
                temCh1 =[NSString stringWithFormat:@"%C",[srcStr characterAtIndex:j+1]];
                srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j, 1) withString:temCh1];
                srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j+1, 1) withString:temCh];
            }
            
        }
    }
    
    return srcStr;
}

//将原字符串进行小写转大写,大写转小写
//比如输入 @"aBCdEfGA" 输出 @"AbcDeFga"
+ (NSString *)reverCharacter:(NSString *)srcStr
{
    NSInteger len = [srcStr length];
    unichar ch;
    NSString *dest = @"";
    for (NSInteger i=0; i<len;i++) {
        ch = [srcStr characterAtIndex:i];
        if (ch >= 'a' && ch <= 'z') {
            ch = ch-32;
        }
        else{
            ch = ch + 32;
        }
        dest = [dest stringByAppendingFormat:@"%C",ch];
    }
    return dest;
}

// 替换字符串srcStr中从startKey到endKey之间的字符串//返回结果
//比如输入srcStr=@"abc da abbc cde f" startKey=@"da" endKey=@"cde" 输出 @"abbc"
+ (NSString *)replaceString:(NSString *)srcStr betweenStartKey:(NSString* )startKey  andEndKey:(NSString*)endKey
{
    NSRange rangeStart = [srcStr rangeOfString:startKey];
    NSRange rangeEnd = [srcStr rangeOfString:endKey];
    NSString *subStr = [srcStr substringWithRange:NSMakeRange(rangeStart.location+rangeStart.length+1, rangeEnd.location-rangeStart.location-rangeStart.length-2)];
    return subStr;
}

// 返回字符串srcStr中出现子串findStr的次数
//helloworldhelloworldhello  hello
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr
{
    NSString *dest = srcStr;
    NSRange range;
    NSInteger count = 0;
    range = [dest rangeOfString:findStr];
    while (range.location != NSNotFound) {
        count++;
        dest = [dest substringFromIndex:range.location+[findStr length]];
        range = [dest rangeOfString:findStr];
    }
    
    return count;
}
@end


main.m主方法:

//
//  main.m
//  IOS150610_OC_字符串练习
//
//  Created by qianfeng on 15/6/10.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "StringOperation.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
             
//        3. 现有字符串@"Welcome to Bejing."
//        提取第3个到第6个字符.
        NSString *subStr4 = [str4 substringWithRange:NSMakeRange(2, 4)];
        NSLog(@"subString = %@",subStr4);
        
//        4. 现有字符串@"When I was young, I loved a girl on neighbor class."
//        要求不通过点数,从was提取到girl。
        NSString *str5 = @"When I was young, I loved a girl on neighbor class.";
        NSRange rangeWas = [str5 rangeOfString:@"was"];
        NSRange rangeGirl = [str5 rangeOfString:@"girl"];
        if(rangeWas.location != NSNotFound && rangeGirl.location != NSNotFound && rangeWas.location < rangeGirl.location)
        {
            str5 = [str5 substringWithRange:NSMakeRange(rangeWas.location, rangeGirl.location-rangeWas.location+rangeGirl.length)];
        }
        NSLog(@"substring = %@",str5);
        
//        Welcome to Qianfeng.
//        删除to这个词。
        NSMutableString *str6 = [NSMutableString stringWithString: @"Welcome to Qianfeng."];
        NSRange range1 = [str6 rangeOfString:@"to"];
        [str6 deleteCharactersInRange:range1];
        NSLog(@"str6 = %@",str6);
        
//        6. Hello world两个单词间插入China
        NSMutableString *str7 = [NSMutableString stringWithUTF8String:"Hello world"];
        [str7 insertString:@"China" atIndex:6];
        NSLog(@"str7= %@",str7);
        
//        7. 现有字符串@"When I was young, I loved a girl on neighbor class. "
//        从young到girl,改成@"teacher, I rather teaching the students"
        NSString *str8 = @"When I was young, I loved a girl on neighbor class. ";
        NSRange rangeYoung = [str8 rangeOfString:@"young"];
        NSRange rangeG = [str8 rangeOfString:@"girl"];
        if(rangeYoung.location != NSNotFound && rangeG.location != NSNotFound && rangeYoung.location < rangeG.location)
        {
            str8 = [str8 stringByReplacingCharactersInRange:NSMakeRange(rangeYoung.location, rangeG.location-rangeYoung.location
                                                                                           +rangeG.length)
                                                 withString:@"teacher, I rather teaching the students"];
        }
        NSLog(@"str8 = %@",str8);
        
        //将传入的字符串逆序
        //比如输入 @"abcdef"输出@"fedcba"
        //+(NSString*)reveserString:(NSString*)srcStr;
        
        NSLog(@"%@",[StringOperation reveserString:@"abcdef"]);
        
        NSLog(@"%@",[StringOperation compressString:@"aaabbbcceaaaad"]);
        
        NSLog(@"%@",[StringOperation sortString:@"aczabczab"]);
        
        NSLog(@"%@",[StringOperation reverCharacter:@"aBCdEfGA"]);
        
        NSLog(@"%@",[StringOperation replaceString:@"abc da abbc cde f" betweenStartKey:@"da" andEndKey:@"cde"]);
        
        NSLog(@"%ld",[StringOperation subStringCount:@"helloworldhelloworldhello" findStr:@"hello"]);
        }
<span style="white-space:pre">	</span>return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值